![](/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.