同级不为空,因为注释计为对象

时间:2013-06-14 14:16:22

标签: javascript jquery html

我通过jQuery对象列表进行迭代,然后检查nextSibling属性是null。不幸的是,html注释被视为类型对象的兄弟。我怎么能抓住这个?我需要一个触发obj.nextSibling == null || obj.nextSibling == comment

的if语句

3 个答案:

答案 0 :(得分:2)

如何编写函数来执行此操作,只返回 Elements (即node.nodeType === 1

function nextElement(node) {
    while (node = node.nextSibling) if (node.nodeType === 1) return node;
    return null;
}

这是做什么的,

// while
node = node.nextSibling // get next sibling, if falsy break while
if (node.nodeType === 1) // if it is an Element, return it
// else go back to while
return null; // if we get here, next sibling was null

您可以看到 nodeType here on MDN的不同值列表。

答案 1 :(得分:1)

评论节点不是null,它们是评论节点(如果它们是null,它们会使第一个条件为真......)。因此,您需要测试nodeType以查看它是否为评论。

obj.nextSibling == null || obj.nextSibling.nodeType == 8

参考:https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType

答案 2 :(得分:0)

也许您需要使用.filter("*");

过滤掉评论节点

像这样:

obj.siblings().filter("*")

obj.siblings("*");