![](/img/trans.png)
[英]How do I traverse Execution Contexts with jQuery in Chrome Dev Tools?
[英]how do i traverse ancestors with jQuery?
如何使用jQuery遍历祖先?
当前代码陷入了递归循环:
HTML:
<html>
<body>
<div>
<ul>
<li></li>
</ul>
</div>
</body>
</html>
JS:
function traverse($node){
while ( $node.get(0) !== $("html").get(0) ) {
console.log($node);
traverse($node.parent());
}
}
//traverse($("ul li"));
要观察该问题,请取消注释最后一行,但要警告它可能会冻结浏览器。
在JSFiddle上也是如此: http : //jsfiddle.net/WpvJN/1/
您可以使用.parents()
获取集合,并使用.each()
进行迭代:
$('ul li').parents().each(function () {
console.log(this);
});
我希望您需要对遍历进行限制,以防您寻找的父母不是您开始的祖先。 否则,您要么陷入无休止的循环,要么就没父母了。
例如,可以执行一个通用功能,从一个元素到具有特定标签名称的父级(不是jQuery,但我确定可以在必要时进行转换):
function upTo(tagName, el) {
tagName = tagName.toLowerCase();
// Make sure el is defined on each loop
while (el && el.tagName && el.tagName.toLowerCase() != tagName) {
el = el.parentNode;
}
return el;
}
一种替代方法是检查el.parentNode
并在没有更多对象时停止。
HTML文档中始终存在一个HTML节点,因此,只要您不从文档节点开始,就始终可以到达该节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.