jQuery - 内容等于而不是内容包含

时间:2011-12-30 07:13:35

标签: jquery jquery-selectors

鉴于以下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等于某个字符串(例如“1” “)。例如,给定字符串“one”,此选择器将返回前两个li。

这是我到目前为止所拥有的:

$('#group ul li')将选择所有的li。然后我需要过滤:
$('#group ul li').filter(".category:contains('one')")将选择所有这些li,以便他们有一个包含字符串'one'的类别的子类。但是,有没有办法检查这是 相等 到一个?

我想也许只是编写我自己的函数来进行相等性检查并将其传递给过滤器?

4 个答案:

答案 0 :(得分:20)

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

这可能是最具体的方式。请参阅example

答案 1 :(得分:4)

您可以将过滤功能与功能争议结合使用。类似的东西:

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

答案 2 :(得分:3)

以上答案都不正确。我最终使用它作为我的选择器:

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

如果有更好的方法可以让我知道,我很乐意接受你的回答。

答案 3 :(得分:0)

if语句是否有效,或者您正在寻找选择器?作为陈述,这可能会......

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