我试图让所有孩子,但跳过表:
我拥有的是:
var allElements = $("body").children();
$.each(allElements, function(i, element)
{
// Do something
}); // each element
现在我寻找一种方法,即allElements不包含表或函数,如果元素是表,则返回true:
if(element.is("table"));
我什么都没发现。有谁知道这个问题的解决方案?
答案 0 :(得分:3)
children()
接受选择器,因此请使用:not
一个:
$('body').children(':not(table)').each(function () {
// Whatever
});
为了将来参考,您使用is()
走在正确的轨道上,但如果jQuery对象中的任何元素与选择器匹配,则返回true,您必须使用如下:
$('body').children().each(function () {
if (!$(this).is('table')) {
// It isn't a table, do whatever
}
});
要继续提供替代方案,您还可以使用not()
方法:
$('body').children().not('table').each(function () {
// Do whatever
});
答案 1 :(得分:2)
使用.not()
功能,如下所示:
$("body").children().not('table');
或者,如果要在每个循环中检查更大表达式的一部分,可以使用is()
,例如。
if (! $(this).is('table')) { ... }
答案 2 :(得分:2)
可以在一个选择器中完成:
$('body > :not(table)').each...
答案 3 :(得分:1)
$('body').children().each(function(){
if(!$(this).is('table'))
alert($(this).html())
})
此处的示例http://jsfiddle.net/S2tUS/
或者这个
$('body').children(':not(table)').each(function(){
alert($(this).html())
})