2011-12-30 48 views
10

考慮下面的HTML ...jQuery的 - 內容等於而非內容包含:

<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」)。例如,給定字符串「one」,這個選擇器將返回前兩個li。

這是我到目前爲止有:

$('#group ul li')將選擇所有李時珍的。然後我需要篩選:
$('#group ul li').filter(".category:contains('one')")將選擇所有這些li,使它們具有包含字符串'one'的類別類別的子項。但是,有沒有什麼辦法可以檢查這是否是等於爲1?

我想也許只是寫我自己的功能,做平等檢查,並通過它來過濾?

回答

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

這可能是最具體的方式。請參閱example

+0

您的示例不會返回預期的結果嗎? – 2011-12-30 07:41:20

+1

你想得到前兩個「李」,它確實如此。那麼你的預期結果是什麼? – 2011-12-30 16:36:40

+0

可能在最後錯過了.parent()...我的錯誤 – 2013-03-13 00:59:48

4

您可以使用具有功能性參數的過濾功能。喜歡的東西:

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

這是關閉的,但$(this)應該是檢查類別子,而不是這個... – 2011-12-30 07:45:51

0

會if語句工作,或者你在尋找一個選擇器?作爲聲明,這可能會...

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

我在尋找一個選擇器,我想選擇許多不同的

  • 's。 – 2011-12-30 07:45:07

    3

    以上答案都不正確。最後我用這個作爲我的選擇:

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

    請讓我知道,如果有更好的方法來做到這一點,我會愉快地接受你的答案。

    +0

    實際上....你的就像接受的答案,除了他過濾更具體的前面,你的過濾後更具體。我真的很喜歡其他的。 – Metropolis 2013-06-20 14:59:24

    +0

    查看對接受答案的評論。 – 2013-06-21 16:59:06