是否可以跳过当前子树中的迭代并使用treewalker跳转到下一个节点?例
<nav>
<p>paragraph</p>
<ul>
<li>one</li>
<li>two</li>
</ul>
<p>paragraph</p>
</nav>
Run Code Online (Sandbox Code Playgroud)
和js
var nav=document.getElementsByTagName("nav")[0];
var tree=document.createTreeWalker(nav,NodeFilter.SHOW_ELEMENT,null,false);
tree.firstChild(); // first paragraph
tree.nextSibling(); // ul
tree.firstChild(); // first li chid of ul
tree.nextNode()||tree.nextSibling() // both return next li
Run Code Online (Sandbox Code Playgroud)
有没有办法如何停止子树的迭代,并在treewalker点击第一个LI元素后直接跳到另一个段落?
您可以创建自定义过滤器:
var filter = {
acceptNode: function(n) {
return n && n.parentNode && n.parentNode.tagName != "UL"
? NodeFilter.FILTER_ACCEPT
: NodeFilter.FILTER_REJECT;
}
};
var tree=document.createTreeWalker(nav, NodeFilter.SHOW_ELEMENT, filter, false);
Run Code Online (Sandbox Code Playgroud)