如何使用jQuery来select除select元素之外的所有子项
我有一个div(比方说id是“容器”),里面有很多元素,包括select元素。 我想select除了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 *)")
也尝试没有通配符后代select器,所以就像以上所有,但
$("#container:not(#selectorid)")
您可以简单地省略通配符,因为在这种情况下它是可选的,但保留空格:
$('#container :not(select)');
或者,使用.not()方法在select所有子项后过滤出select:
$('#container').children().not('select');
如果您的问题是仍然包含select
子项,您可以使用.not()方法明确地过滤掉这些项目:
$('#container').children().not('select, option, optgroup');
或仅select直接子女:
$('#container > :not(select)');
您可以在交互式jQueryselect器testing程序中尝试jQueryselect器以获得快速反馈; 尝试例如div :not(ol)
或div > :not(ol)
来感受直接子( >
)select器的不同之处。
您也可以使用遍历方法来尝试它:
$('#container').children().not('#selectorId');
或者是最后的select:
$('#container').children().filter(function(){ return $(this).attr('id') !== 'selectorId'; }
使用:not
,和.not()
来select和过滤» 现场演示
:not(selector)
正是这样做,它有几种风格。 您可以使用select器或方法 。 下面是使用select器的一个例子:
$("#container :not(select)");
这将匹配#container
中不是 <select>
元素的任何子项。 然后,我们有排除的方法,它是相同的名称,但必须以不同的方式运行:
$("#container").children().not("select");
这违背了匹配元素的children
。 在这种情况下, .not
filter的作用。 下面的例子使用.filter()
来得到你想要的结果。 用这个方法,我们可以提供我们自己定制的function,通过search结果并挑选我们想要的:
使用.filter()
过滤匹配的元素» 现场演示
$( "#container" ).children().filter( isNotSELECT ).fadeTo( "slow", .5 ); function isNotSELECT () { // Returns TRUE if element is NOT select return !$(this).is("select"); }
$( "#container" ).children().filter( isNotSELECT ).fadeTo( "slow", .5 ); function isNotSELECT () { // Returns TRUE if element is NOT select return !$(this).is("select"); }
在这个例子中,我们select#container
所有孩子,然后通过我们定义的名为“isNotSelect”的filter传递它们。 在我们的filter中,我们为每个元素返回true
或false
。 如果我们返回true
,那么这个元素将被返回给结果集。 如果我们返回false
,那么该元素将从结果集中移除。 我们问这个元素是不是一个select。 这将为所有select元素返回false
,从而将其从我们的集合中删除。
$(#container select).siblings()
目前还不清楚你真正想从你的问题。 :not(select)会从所有后代中过滤出select,但是不会从select后裔中删除。 如果这是你的问题,然后尝试以下
演示
$("#container *").filter( function(){ return $(this).closest('select').length === 0 })
JQuery单击处理程序的一切,但某个对象
解决问题的两种方法: 8票的那个可能是你正在寻找的那个。
也许这可以帮助你3#是select
尝试其中之一:
$("#container *:not(eq(3))"); $("#container").children().filter(:not(eq(3)));