2016-01-12 66 views
3

我想選擇某個類的一些div元素,但沒有某些數據屬性。例如,我有12周的div數據屬性從1到12,我想選擇所有這些,除了那些數據屬性1,11和12這是我的(不工作)到目前爲止的代碼:jQuery選擇類但不是某些數據屬性

$('div.randomize_class [data-value!=1],[data-value!=11],[data-value!=12]'); 

其目的是僅混洗匹配的div,並最終在屬性1,11和12後面添加屬性。洗牌功能很好地工作,它只是關於選擇選擇類的一個子集。

洗牌後,所以,我想只選擇那些具有數據屬性1,11和12我想這:

$('.randomize_class [data-value=1],[data-value=11],[data-value=12]') 

會很高興的任何幫助!非常感謝你。

回答

4

您應該使用.filter()結合屬性值選擇器。

只選擇那些具有數據屬性1,11和12

$('.randomize_class').filter('[data-value=1],[data-value=11],[data-value=12]') 

選擇所有這些除了那些數據屬性1,11和12:not() Selector.not()功能,以排除所述元素

$('.randomize_class').filter(':not([data-value=1]),:not([data-value=11]),:not([data-value=12])') 

OR

$('div.randomize_class').not('[data-value=1],[data-value=11],[data-value=12]'); 
+1

最後不要''.not'示例中的'!='。 –

+0

非常感謝! '.not()'很好:-) – Mario

1

您需要使用.not()排除這些項目

$('div.randomize_class').not('[data-value!=1],[data-value!=11],[data-value!=12]'); 

你選擇.randomize_class [data-value=1],[data-value=11],[data-value=12]將獲取與data-value=1頁面randomize_class下的所有元素和所有元素與data-value=11data-value=12

4

你說你雙方都想不是選擇data-value=1(和11和12),也是你想要。


對於情況下,你可以使用:not

$('div.randomize_class:not([data-value=1]):not([data-value=11]):not([data-value=12])'); 

...其中有在CSS(不,我覺得這確實適用於這裏)也在努力的優勢,提供你只能在:not內使用simple selectors(因爲CSS定義的:not只需要簡單的選擇器; jQuery更進一步)。

或者其表弟.not(其中:not文檔建議通常是一個更好的選擇):

$('div.randomize_class').not('[data-value=1], [data-value=11], [data-value=12])'); 

對於選擇的選項data-value=1(11和12),你做它帶有一個簡單的屬性選擇器系列:

$('div.randomize_class[data-value=1], div.randomize_class[data-value=11], div.randomize_class[data-value=12])'); 
0
$('.randomize_class:not([data-value="1"],[data-value="11"],[data-value="12"])') 
+0

請使用您問題上的編輯鏈接來補充上下文,詳細信息和/或代碼示例。 _Post Answer_按鈕只能用於**完整回答問題**。 – mathielo

相關問題