JQuery - содержимое, равное, а не содержащее содержимое, содержит

Учитывая следующий 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, равным некоторой строке (например, "один" ), Например, учитывая строку "один" , этот селектор вернет первые два li.

Вот что я до сих пор:

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

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

Ответ 1

$('#group ul li div.category').filter(function() {return $(this).text() == "one";}).parent()

Это, вероятно, самый конкретный способ. См. пример.

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

if ($('#group ul li .category').html() == 'one')