javascript - 树行者迭代

标签 javascript

是否可以使用 treewalker 跳过当前子树中的迭代并跳转到下一个节点? 例子

<nav>
    <p>paragraph</p>
    <ul>
        <li>one</li>
        <li>two</li>
    </ul>
    <p>paragraph</p>
</nav>

和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

有什么方法可以在树行者命中第一个 LI 元素后停止子树的迭代并直接跳转到另一段?

最佳答案

您可以创建自定义 filter :

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);

关于javascript - 树行者迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30696232/

相关文章:

javascript - 根据下拉选择显示/隐藏 <tr> - angularjs

javascript - 谷歌地图 API - 添加多个目的地不起作用(谷歌方向)

javascript - 是否可以将 Babel npm 包用于 node.js 服务器应用程序

javascript - 聊天应用程序无法在端口 80 上运行 socket.io 和 node.js./express

javascript - 使用 jQuery 查找更改的表单元素

javascript - 在 JavaScript 和 xml 中计算天数

javascript - 情节线后的 Highcharts 标记

javascript - 如何在div中调整上传图片的预览?

javascript - Lodash union 无法与展开操作符一起使用

javascript - 在内容可编辑的 div 中选择表格?