2013-03-14 162 views
3

我在所有选择框上应用一个类。属性选择器问题

$('select[class!="skip_these"]').uniform(); 

和上面的代码意味着当我申请与skip_there类中的任何选择框,它不会被应用,它的工作原理。

<select name="xyz" class="skip_these"></select> 

但是,当我添加另一个类它适用,我不想这样。

<select name="xyz" class="skip_these myclass"></select> 

有没有办法解决它?
我不想为此更改插件。

可以通过jQuery选择器来完成吗?

+0

如果(object.hasClass( “”)),不要做它时,它不没有其他事情要做 – 2013-03-14 20:08:52

+1

+1,好问题。 'class!= skip_these'的问题在于你正在检查'class'的整个值,而不是'skip_these',如果添加了另一个类,那么偏离当然是不正确的。正如答案所显示的那样,使用相反的方法寻找什么是“不”存在,反而效果很好。再次,这是一个很好的问题,对于未来的用户肯定有用 – Nope 2013-03-14 20:17:14

+0

这是一个很好的问题,因为它似乎没有重复。为了将来的参考,OP可以很快通过谷歌搜索“_jQuery不包含selector_”得到答案。 – jahroy 2013-03-14 20:40:12

回答

8
$('select:not(.skip_these)').uniform(); 

这将工作太:

$('select').not('.skip_these').uniform(); 
+1

你是快的人;)感谢它的完美工作 – Iori 2013-03-14 20:11:47

+0

我很高兴我的帮助,但如果不是我,其他人会在几秒钟内帮助,所以我不觉得自己是英雄:D – karaxuna 2013-03-14 20:17:15

6

使用:not伪选择:

$('select:not(.skip_these)').uniform();