2011-09-28 132 views
24

所以我正在研究從後端團隊構建時沒有深思熟慮的事情。這給我留下了一個充滿div的文檔。當元素有多個類時,jquery通過特定的類來查找元素

我正在做的是從我需要點擊的元素回滾,獲取父容器,然後找到父母中有一個元素class="alert-box warn"class="alert-box dead",等等......基本上,我試圖使用多個每個元素上的類選擇器。當我試圖找到只是alert-box它似乎並不正確。我假設,因爲它有warn,死亡,``等等......

我怎樣才能找到alert-box*或相當於通配符的概念?

+2

你能發佈你的HTML標記的樣本嗎? –

回答

52

您可以組合選擇這樣

$(".alert-box.warn, .alert-box.dead"); 

或者,如果你想有一個通配符使用attribute-contains selector

$("[class*='alert-box']"); 

注意:最好你會使用上述選擇時知道元素類型或標籤。知道標籤可以使選擇器更有效率。

$("div.alert-box.warn, div.alert-box.dead"); 
$("div[class*='alert-box']"); 
+0

我會推薦第一個選擇器。 – Bojangles

+1

如果您有興趣確保元素的類以「alert」框開頭,而不僅僅是「contains」警告框,您也可以用* =替換^ =。 –

+0

我剛剛發佈了一個示例jsfiddle https://jsfiddle.net/frxyqzw3/2/顯示類* idea – shadi

2

元素可以有任意數量的className,但是它只能有一個class屬性;只有第一個會被jQuery讀取。

使用您發佈的代碼,$(".alert-box.warn")將工作,但$(".alert-box.dead")不會。

+0

只有第一個'class =「」'屬性會被瀏覽器讀取,更不用說jQuery了。 – Bojangles

+0

這就是我想要得到這個答案的一點,是否不夠清楚? –

+0

我只是想澄清一下,由於瀏覽器的HTML解析器忽略了它們,jQuery實際上並不會看到任何進一步的'class =「」'es。 – Bojangles

-1

您正在尋找http://api.jquery.com/hasClass/

<div id="mydiv" class="foo bar"></div> 

$('#mydiv').hasClass('foo') //returns ture 
+4

不,他不是 - 他想根據自己的班級來選擇元素,而不是看他是否擁有班級的元素。 – Bojangles

3
var divs = $("div[class*='alert-box']"); 
7

您可以選擇多類元素,像這樣:

$("element.firstClass.anotherClass"); 

只需鏈的下一個類上的第一個,沒有一空間(空間意味着「的孩子」)。