jQuery,REAL:不是运营商的等价物吗?

时间:2011-10-12 23:30:57

标签: jquery

此代码行选择任何div中的所有子输入,其类名称不是“id”和“quantity”::

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

执行相反的代码行是什么?,类似::

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

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

2 个答案:

答案 0 :(得分: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,因此第一个示例可能是最简单的技术。

答案 1 :(得分: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/