jQuery选择类但不是某些数据属性

Mar*_*rio 4 jquery jquery-selectors custom-data-attribute

我试图选择某个类的一些div元素但没有某些数据属性.例如,我有12个div,数据属性从1到12,我想选择所有这些除了数据属性为1,11和12的那些.这是我的(不工作)代码到目前为止:

$('div.randomize_class [data-value!=1],[data-value!=11],[data-value!=12]');
Run Code Online (Sandbox Code Playgroud)

目的是仅对匹配的div进行洗牌,并最终在结尾追加属性为1,11和12的div.混洗功能很好地工作,它只是选择选择类的一个子集.

所以在洗牌之后,我想只选择那些数据属性为1,11和12的人.我试过这个:

$('.randomize_class [data-value=1],[data-value=11],[data-value=12]')
Run Code Online (Sandbox Code Playgroud)

很高兴得到任何帮助!非常感谢你.

Sat*_*pal 6

您应该.filter()与属性值选择器结合使用.

仅选择具有数据属性1,11和12的那些

$('.randomize_class').filter('[data-value=1],[data-value=11],[data-value=12]')
Run Code Online (Sandbox Code Playgroud)

选择除数据属性为1,11和12的数据之外的所有数据 :not()选择器.not()函数排除元素

 $('.randomize_class').filter(':not([data-value=1]),:not([data-value=11]),:not([data-value=12])')
Run Code Online (Sandbox Code Playgroud)

要么

$('div.randomize_class').not('[data-value=1],[data-value=11],[data-value=12]');
Run Code Online (Sandbox Code Playgroud)


T.J*_*der 5

你说你既想选择data-value=1(11和12),也即你想。


对于not情况,您可以使用:not

$('div.randomize_class:not([data-value=1]):not([data-value=11]):not([data-value=12])');
Run Code Online (Sandbox Code Playgroud)

...它的优点是也可以在 CSS 中工作(不是我认为这真的适用于这里),前提是您只在内部使用简单的选择器:not(因为 CSS 定义:not只需要简单的选择器;jQuery 更进一步)。

或者它的表亲.not:not文档建议通常是更好的选择):

$('div.randomize_class').not('[data-value=1], [data-value=11], [data-value=12])');
Run Code Online (Sandbox Code Playgroud)

对于选择的选项只有data-value=1(11和12),你用一个简单的属性选择器系列做到这一点:

$('div.randomize_class[data-value=1], div.randomize_class[data-value=11], div.randomize_class[data-value=12])');
Run Code Online (Sandbox Code Playgroud)