我有一个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)")
你可以简单地忽略通配符,因为它是在这种情况下可选的,但保留空间:
$('#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)
以获得直接孩子(有什么区别的感觉>
)选择做。
您也可以尝试使用它遍历方法:
$('#container').children().not('#selectorId');
或成为最后的选择:
$('#container').children().filter(function(){
return $(this).attr('id') !== 'selectorId';
}
使用: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”过滤器通过他们。 在我们的过滤器,我们返回无论是true
或false
每一个元素。 如果我们回到true
,该元素将返回结果集。 如果返回false
,该元素会从结果集中被删除。 我们询问是否元素不是选择。 这将返回false
所有选择元素,从而从我们收集删除它们。
$(#container select).siblings()
http://docs.jquery.com/Traversing/siblings
目前尚不清楚你实际上从你的问题想要什么。 :没有(选择)将所有的后代筛选出选择,但它不会从选择的后代。 如果这是你的问题,那么请尝试以下
演示
$("#container *").filter( function(){
return $(this).closest('select').length === 0
})
JQuery的单击处理程序的一切,但一定对象
两种方法的问题:一个以8票 ,可能是你正在寻找的人。
也许这可以帮助你在哪里3是#选择
尝试其中之一:
$("#container *:not(eq(3))");
$("#container").children().filter(:not(eq(3)));