Селектор :contains()
соответствует только элементам, которые содержат указанный c текст . Чтобы соответствовать значению атрибута элемента (например, href
), используйте Селектор равных атрибутов :
attributeEquals selector
Выбирает элементы, которые иметь указанный атрибут со значением, точно равным определенному значению.
jQuery( "[attribute='value']" )
Также см. другие селекторы атрибутов : содержит *=
, начинается с ^=
, не равно !=
, et c.
В вашем случае мы хотим добавить класс к <tr>
элементы, которые содержат <a>
с указанным значением c href
.
Одним из методов является использование селектора :has()
:
имеет селектор
Выбирает элементы, которые содержат хотя бы один элемент, соответствующий указанному селектору.
jQuery( ":has(selector)" )
let url = window.location.href;
$(function() {
$('tr:has(a[href="' + url + '"])').addClass('active');
});
.active {
background-color: lightgreen;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr><td><a href="https://example.com/">Example</a></td></tr>
<tr><td><a href="https://stacksnippets.net/js">This Page</a></td></tr>
<tr><td><a href="https://example.com/">Another Example</a></td></tr>
</table>
Другой метод - выбрать элемент <a>
, а затем пройти до соответствующего <tr>
.
let url = window.location.href;
$(function() {
$('a[href="' + url + '"]').closest('tr').addClass('active');
});
.active {
background-color: lightgreen;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tr><td><a href="https://example.com/">Example</a></td></tr>
<tr><td><a href="https://stacksnippets.net/js">This Page</a></td></tr>
<tr><td><a href="https://example.com/">Another Example</a></td></tr>
</table>