2011-10-12 33 views
4

这行代码选择谁是他的类名是不是“id”和“量” ::jQuery,REAL:不等于运营商?

$("div.item > div:not(.id,.quantity) > :input").live("keydown",function(event) {}); 

什么是代码行做相反的任何DIV中所有的孩子投入?,像::

$("div.item > div:filter(.id,.quantity) > :input").live("keydown",function(event) {}); 

(当然:filter不是一个有效的jQuery选择)

+0

有一个但是['.filter()'](http://api.jquery.com/filter/)。 –

+0

我不能使用.filter()cuz来排除使用.live()事件处理程序。 – AgelessEssence

回答

3

我不知道我会建议,但你可以使用:not两次:

$("div.item > div:not(:not(.id,.quantity)) > :input") 

http://jsfiddle.net/6aW2B/

更好的方法是创建自己的:is选择

$.expr[':'].is = function(elem, index, match){ 
    return $(elem).is(match[3]); 
}; 

$("div.item > div:is(.id,.quantity) > :input") 

http://jsfiddle.net/8Uny2/

+0

WOW !,我不知道使用:不是操作符,嘿,只是工作惊人!(如此聪明,那么简单),当你说“你真棒!”时,你的父母说出了真相:B – AgelessEssence

+0

@ iim.hlk请不要试图以激进的方式编辑他人的答案。评论哪些方面对你最有用 – joran

+0

@joran好,好点:B – AgelessEssence

3

我想你所想的 “或” 的概念。不幸的是,这在jQuery/CSS选择中并不存在。你需要做一个“或”整个选择:

$('div.item > div.id > :input, div.item > div.quantity > :input') 

如果你不使用live,要做到这一点,最简单的方法是使用DOM遍历:

$('div.item').children('div.id, div.quantity').children(':input') 

由于您使用live ,第一个例子可能是最简单的技术。

+0

这真的是独特的解决方案吗?,我需要定义每个子div的每行?,我真正的代码是像“form#dinamic> div.articleListContainer> div.area2> div.data> div.itemModifing> DIV.ID>输入“,换句话说”太长“。 – AgelessEssence

+0

@ iim.hlk所有这些类*真的*必需的吗?你不能这样做,说'form#dinamic div.id>:input'? – lonesomeday

+0

是的,我有一个文件结构像http://jsfiddle.net/3t9JX/ – AgelessEssence