2011-01-13 28 views
2

我有一個jQuery選擇,它既可以作爲新創建的元素(例如$("<div/>"))發起,也可以不具有父代,或者實際上是DOM中的元素。確定一個jQuery選擇是否在DOM中

確定所選元素是否實際位於當前DOM樹中的最有效方法是什麼?

一種可能性是致電.parent(),但我懷疑有一種更有效的方法。

+0

如果你想讓你的JavaScript運行得更快,這不會有太大的區別。你需要先做一些分析工作,看看實際上很慢。調用父()一百次甚至不會花費毫秒。 – 2011-01-13 22:10:39

+0

@Mike,這取決於我需要多久調用一次該方法。 – kpozin 2011-01-13 22:25:28

回答

2

我意識到我的問題,安迪的解決方案(使用node.parentNode)可以推廣。這裏有一個完整版本,可以用於任何jQuery選擇,即使它至少有一個祖先。

/** 
* Returns true if this selection is part of the current DOM; 
* false if it's a fragment. 
* @return {Boolean} 
*/ 
jQuery.fn.inDom = function() { 
    // Get the first element in the jQuery selection 
    var node = this[0]; 

    while (node) { 
     if (node.nodeType === Node.DOCUMENT_NODE) { 
      return true; 
     } 
     node = node.parentNode; 
    } 
    return false; 
} 
-1

爲新創建的元素指定一個ID並查詢該ID。

+0

但是這樣更有效率嗎?我要求分析。 – 2011-01-13 21:56:22

相關問題