2013-03-15 69 views
2

我的代碼循環通過一些divs,我試圖找到一個包含其style屬性中的某些文本。這是我最好的嘗試,但它沒有找到它。jQuery Selector - 檢查當前div屬性是否包含文本?

$("#RootDiv > div").each(function (index) 
{ 
    if ($(this).is("[style~='bg-stripes.gif']")) 
      alert("found"); 
}); 

的Html

<div id="RootDiv"> 
<div style="background-color: White;"></div> 
<div style="background-image: url(bg-stripes.gif);"></div> 
<div style="background-color: White;"></div></div> 
+0

HTML的外觀如何? – j08691 2013-03-15 14:59:07

+0

特定文本或任何文本? – Alnitak 2013-03-15 15:00:00

+0

你試過了嗎if($(this).attr('style')。indexOf('...')> -1)'? – 2013-03-15 15:00:04

回答

1

由於@FelixKling說你不需要使用一個選擇,我想使用選擇在這個特殊的情況較爲混亂,而不是你可以簡單地嘗試:

if ($(this).attr('style').indexOf('bg-stripes.gif') > -1) 
+0

這很好,謝謝! – JoJo 2013-03-15 15:12:06

0

~=操作者查找空格分隔單詞,這可能不適合於style屬性。

嘗試使用*=「contains」運算符代替。您還可以在原來的選擇結合起來的:

$("#RootDiv > div[style*='bg-stripes.gif']")... 

,這將給你正是你需要的,您無需在它們之間迭代,並與.is()測試它們單獨的元素。

+0

謝謝,這也適用。我必須迭代,但我忽略了一些代碼來簡化我的問題。 – JoJo 2013-03-15 15:15:59

+0

@ user2174420當然,仍然使用'.each',但是忽略了'if'測試 - 在現代瀏覽器上,這應該更有效率。 – Alnitak 2013-03-15 15:19:55

+0

好吧,我明白你在說什麼,但是我確實需要遍歷所有的div,因爲我在代碼中也使用它們(未顯示)。謝謝! – JoJo 2013-03-15 15:25:11

3

嘗試使用*=選擇,而不是:

$(this).is("[style*='bg-stripes.gif']") 

~=選擇器只能使用單個詞而不是子字符串。