jQuery,REAL:不是等价的操作符吗?

jQuery,REAL:不是等价的操作符吗?,jquery,Jquery,此代码行选择其类名不是“id”和“quantity”的任何div内的所有子输入: 相反的代码行是什么?,类似于: $("div.item > div:filter(.id,.quantity) > :input").live("keydown",function(event) {}); (当然:filter不是一个有效的jQuery选择器)我想您是在考虑一个“或”概念。不幸的是,这在jQuery/CSS选择中并不存在。您需要对整个选择执行“或”: $('div.item >

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

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

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

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

我想您是在考虑一个“或”概念。不幸的是,这在jQuery/CSS选择中并不存在。您需要对整个选择执行“或”:

$('div.item > div.id > :input, div.item > div.quantity > :input')
如果不使用
live
,最简单的方法是使用DOM遍历:

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

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

我不知道是否推荐使用此方法,但您可以使用
:而不是
两次:

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

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

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

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

但是有一个。我不能使用.filter(),因为它排除了.live()事件处理程序的使用。这真的是唯一的解决方案吗?我需要为每个子div?定义每一行,我真正的代码类似于“form#dinamic>div.articlestcontainer>div.area2>div.data>div.itemmoding>div.ID>:input”,换句话说就是“太长”.@iim.hlk这些课程真的有必要吗?你不能这样做吗,比如说
表单#dinamic div.id>:输入
?哇!,我不知道用的是:不用操作员,嘿嘿,那个只是工作太神奇了!(如此聪明,如此简单),你父母说“你太棒了!!”时说的是实话:B@iim.hlk请不要试图以如此激进的方式编辑他人的答案。你可以在评论中注明哪些方面对你最有用。
$.expr[':'].is = function(elem, index, match){
    return $(elem).is(match[3]);
};

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