2013-10-23 52 views
0

我有許多div的列表。每個塊總是遵循這種模式,在頁面上多次。選擇元素包含jQuery中的文本

<div ...> 
    <div ...>count</div> 
    <div ...>Unread</div> 
</div> 

目的是檢查兄弟div,如果計數不爲零,然後修改CSS。否則跳過。

他們沒有id s,並且類名稱改變。其他人寫了HTML,所以我不能改進。

我的代碼似乎沒有選擇包含'未讀'的div。它應該修改顏色。

http://jsfiddle.net/ninmonkeys/5yDZb/

如果使用contains("Unread")沒有工作,我應該能夠通過使用父搶兄弟選擇?

$("div:contains('Unread')").css("background-color:red !important;"); 

回答

1

css語法不正確,但我不認爲單獨修復會得到你想要的。 :contains()選擇器與您想要的div的父母匹配。你可以使用filter代替:

http://jsfiddle.net/TPeSP/

$('div').filter(function() { 
    return $(this).text() == 'Unread' && $(this).siblings('div').text() != "0"; 
}).css("background-color", "red"); 
+0

[我稍微修改它](http://jsfiddle.net/ninmonkeys/TPeSP/2/),這簡化了我的父母邏輯,因爲我最終突出顯示了父母的div。 - 我認爲'$(this).parent()'會選擇包含單詞「未讀」的div的父代。但我必須使用兩個父母。 (我理解其他語言的XML解析,但我是新來的jQuery和JavaScript) – ninMonkey

3

你的問題是不是在選擇的元素,它是在你使用的css

http://jsfiddle.net/5yDZb/2/

.css("background-color", "red"); 

當設定值,.css有兩個參數,第一個是該物業和第二個是價值。

+1

怎麼你們做的事情這麼快?做得太好了。 –

1
$("div:contains('Unread')").css({"background-color":"red"}); 
+0

謝謝,我是通過手機完成的,無法獲取代碼格式。 :) – carter

相關問題