2016-01-12 28 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

相关问题