jQuery - содержимое, равное, а не содержимое, содержит - PullRequest
10 голосов
/ 30 декабря 2011

Учитывая следующее html ...

<div id="group">
    <ul>
        <li><div class="category">one</div></li>
        <li><div class="category">one</div></li>
        <li><div class="category">onetwo</div></li>
        <li><div class="category">two</div></li>
    </ul>
</div>

... Я пытаюсь выяснить, как сделать селектор в jQuery, который будет выбирать все '#group ul li' элементы, у которых есть дочерний элемент '.category' с innerHTML, равным некоторой строке (например, «один»).Например, учитывая строку «one», этот селектор будет возвращать первые два li.

Вот что у меня есть:

$('#group ul li') выберет все li.Затем мне нужно отфильтровать:
$('#group ul li').filter(".category:contains('one')") выберет все эти li, чтобы у них был дочерний элемент с категорией класса, содержащей строку 'one'.Тем не менее, есть ли способ проверить, что это равно одному?

Я думаю, может быть, просто написать свою собственную функцию, которая выполняет проверку равенства и передатьчто фильтровать?

Ответы [ 4 ]

20 голосов
/ 30 декабря 2011
$('#group ul li div.category').filter(function() {return $(this).text() == "one";}).parent()

Это, пожалуй, самый специфический способ.См. пример .

4 голосов
/ 30 декабря 2011

Вы можете использовать функцию фильтра с функциональным аргументом.Что-то вроде:

$('#group ul li').filter(function() { return $(this).html() == 'one'; } )
3 голосов
/ 30 декабря 2011

Ни один из приведенных выше ответов не является правильным.Я выбрал это в качестве моего селектора:

$('#group ul li').filter(function() { 
    return $(this).children('.category').html() == 'one';
})

Пожалуйста, дайте мне знать, если есть лучший способ сделать это, и я с радостью приму ваш ответ.

0 голосов
/ 30 декабря 2011

сработает ли оператор if, или вы ищете селектор? как утверждение, это могло бы сделать ...

if ($('#group ul li .category').html() == 'one')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...