如何使用jQuery选择所有的孩子,除了一个select元素(How do I use jQuery

2019-06-25 21:50发布

我有一个div(假设id为“容器”),在它的许多元素,包括一个select元素。 我想选择除了选择div所有的一切。 事情我已经尝试:

$("#container *:not(select)")
$("#container *:not(#selectorid)")

//put a div around the select and...
$("#container *:not(#selectorcontainer)")
$("#container *:not(#selectorcontainer *)")
$("#container *:not(#selectorcontainer, #selectorcontainer *)")

也试过不通配符后代选择,所以就像上述所有,但

$("#container:not(#selectorid)")

Answer 1:

你可以简单地忽略通配符,因为它是在这种情况下可选的,但保留空间:

$('#container :not(select)');

或者,使用。不是()方法选择所有孩子后滤出选择:

$('#container').children().not('select');

如果你的问题是,孩子select仍包括在内,你可以明确地用。不是()方法筛选出那些:

$('#container').children().not('select, option, optgroup');

或者只选择直接的孩子:

$('#container > :not(select)');

您可以尝试在jQuery选择交互式jQuery选择测试仪进行快速反馈; 尝试例如div :not(ol)div > :not(ol)以获得直接孩子(有什么区别的感觉> )选择做。



Answer 2:

您也可以尝试使用它遍历方法:

$('#container').children().not('#selectorId');

或成为最后的选择:

$('#container').children().filter(function(){
    return $(this).attr('id') !== 'selectorId';
}


Answer 3:

使用:not.not()来选择和过滤» 现场演示

:not(selector)正是这样做的,并且它有一对夫妇的风格。 您可以使用选择 ,或方法 。 下面是使用该选择部的例子:

$("#container :not(select)");

这将匹配中的任何孩子#container 不是一个<select>元素。 然后我们有排斥的方法时尚,它的推移相同的名称,但必须以不同方式运行:

$("#container").children().not("select");

这违背了children匹配的元素。 在这种情况下, .not充当过滤器。 这使我想到了一个例子使用.filter()得到你想要的结果。 通过这种方法,我们可以提供自己的自定义功能,通过结果来翻找,并挑选我们需要的那些:

使用.filter()来过滤匹配的元素» 现场演示

$( "#container" ).children().filter( isNotSELECT ).fadeTo( "slow", .5 );​​​​​​​​​​​​​​​​​​​​​​​​​​​

function isNotSELECT () {
    // Returns TRUE if element is NOT select
    return !$(this).is("select");
}

在这个例子中,我们选择所有的孩子#container ,然后通过我们已经定义了一个名为“isNotSelect”过滤器通过他们。 在我们的过滤器,我们返回无论是truefalse每一个元素。 如果我们回到true ,该元素将返回结果集。 如果返回false ,该元素会从结果集中被删除。 我们询问是否元素不是选择。 这将返回false所有选择元素,从而从我们收集删除它们。



Answer 4:

$(#container select).siblings()

http://docs.jquery.com/Traversing/siblings



Answer 5:

目前尚不清楚你实际上从你的问题想要什么。 :没有(选择)将所有的后代筛选出选择,但它不会从选择的后代。 如果这是你的问题,那么请尝试以下

演示

$("#container *").filter( function(){ 
    return $(this).closest('select').length === 0 
})


Answer 6:

JQuery的单击处理程序的一切,但一定对象
两种方法的问题:一个以8票 ,可能是你正在寻找的人。



Answer 7:

也许这可以帮助你在哪里3是#选择

尝试其中之一:

$("#container *:not(eq(3))");
$("#container").children().filter(:not(eq(3)));


文章来源: How do I use jQuery to select all children except a select element