2010-04-19 25 views
4

我試圖能夠檢查選擇器是否具有某些類的集合。檢查選擇器是否有一組類

.hasClass()只能檢查選擇器是否有一個類。 .is()選擇器可以查找多個類,但如果選擇器至少有一個類會返回true。

但我不想實現一種方法來檢查一個選擇器是否具有這兩個類,並且只有當它具有這兩個類時纔會執行操作。

任何指針?

回答

4

你可以簡單的列表中的類名:

.foo.bar.bar 

這個選擇匹配有任何元素所有類別foo,barbaz

+0

這與他列出的用例有什麼關係?例如,想通過'hasClass','is'等查詢實例/列表? (如果他想要*獲得一個列表......這會適用)或者你可以將它傳遞給'hasClass'或其他東西? – 2010-04-19 15:05:20

+0

@ T.J。克羅德:'。是( 「foo.bar.bar」)' – mcrumley 2010-04-19 15:15:04

1

$('div.class1.class2')不做你以後在做什麼(即找到的Class1和Class2中任何DIV)

+0

我不明白「hasClass」,「is」和類似的用例是如何相關的...... – 2010-04-19 15:04:29

+0

@ T.J。 Crowder:它完全消除了hasClass&is的用法。 OP可以首先使用正確的選擇器,而不是使用/獲取所有div,然後檢查class1和class2。在第一個例子中,只需獲得class1和2的所有div。 – Jamiec 2010-04-19 15:08:58

+0

我們以不同的方式閱讀問題。我讀到他已經擁有了這個東西(大概是其他一些操作的結果),現在想要測試它的類組合,*不*他希望去得到它。 – 2010-04-19 15:10:27

1

你可以簡單地做:

var $blah = $("blah"); 
if($blah.hasClass("test") && $blah.hasClass("othertest")){ 
// something 
} 

...或使用選擇

$(".test.othertest");

+0

好了,也許我要舉例說明:( '後') \t \t功能checkFilter(){ \t \t \t \t \t $。每個(函數(){ \t \t \t \t \t \t \t \t \t如果($(本).hasClass( '攝影')&& $(本).hasClass( 'brindfors')){ \t \t \t \t \t \t $(this).show(); \t \t \t \t \t}其他{ \t \t \t \t \t \t $(本).hide(); \t \t \t \t \t} \t \t \t}); \t \t} 但在我的情況下,問題是,我要來檢查類(例如,攝影及brindfors)在這種情況正在改變數組...所以,如果我可以用hasClass(陣列),其本來是超級的。 基於這個例子的任何建議? – emilolsson 2010-04-19 15:14:32

+0

@emilolsson請編輯您的問題與這些信息,它不是真正可讀的意見^^ – marcgg 2010-04-19 15:24:06

2

的是()函數應該爲你工作。

  • 如果你有一個元素,你寫 是(「富」),那麼它將返回true 如果foo是存在。
  • 如果你寫的是(「。foo.bar」),那麼它 將返回true,如果foo AND bar是 存在。
  • 如果你寫的是(「。foo,.bar」),那麼它 將返回true,如果foo或bar是 存在。
+0

感謝您清除此!現在工作。 – emilolsson 2010-04-19 15:21:59

2

我認爲$.is('.class1.class2')會做你想做的。例如,$('#foo').is('.a.b')返回以下div真的,但$('#foo').is('.a.c')將返回false:

<div id="foo" class="a b"></div> 

是不是你在找什麼?

+0

是的,你是對的..我用()以錯誤的方式!感謝您的幫助...... – emilolsson 2010-04-19 15:20:10