Ответ 1
$('#group ul li div.category').filter(function() {return $(this).text() == "one";}).parent()
Это, вероятно, самый конкретный способ. См. пример.
Учитывая следующий 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 таким образом, что у них есть дочерний элемент с категорией классов, который содержит строку "один" . Однако есть ли способ проверить, что это равно одному?
Я думаю, может быть, просто написать свою собственную функцию, которая проверяет равенство и передает ее для фильтрации?
$('#group ul li div.category').filter(function() {return $(this).text() == "one";}).parent()
Это, вероятно, самый конкретный способ. См. пример.
Вы можете использовать функцию фильтра с функциональным аргументом. Что-то вроде:
$('#group ul li').filter(function() { return $(this).html() == 'one'; } )
Ни один из приведенных выше ответов не является правильным. В итоге я использовал это как мой селектор:
$('#group ul li').filter(function() {
return $(this).children('.category').html() == 'one';
})
Пожалуйста, дайте мне знать, если есть лучший способ сделать это, и я с радостью приму ваш ответ.
будет работать оператор if, или вы ищете селектор? как утверждение, это может сделать...
if ($('#group ul li .category').html() == 'one')