2010-07-14 60 views
0

是否可以在jQuery API或DOM中檢查頁面上是否存在元素?如何區分生成元素和選定元素之間的區別?

考慮以下兩個變量:

var selected = $('span#mySpan'); 
var created = $('<span id="mySpan">Testing</span>'); 

雙方將返回包含跨度元素的jQuery對象。有沒有什麼辦法可以告訴第一個存在於頁面上,而第二個不存在?

回答

2

嘗試

$(created).parents("html").length 

這裏有一些更多的方式做同樣的:

$(document).find(created).length 
$(created).parents(document).length 

或者使用被此任務建造的contains方法。它只接受DOM節點,所以我們需要從jQuery解開它反對

$.contains(document, created.get(0)) 

純DOM方法將使用Node.compareDocumentPosition方法。在上面的例子中,

// get the DOM node 
var createdNode = created.get(0); 
var position = document.compareDocumentPosition(createdNode); 
var isNotInDocument = (position & Node.DOCUMENT_POSITION_DISCONNECTED) != 0; 
+0

美麗簡潔明瞭:) – 2010-07-14 19:02:53

+0

它是簡單的,但不是防呆:)考慮一個節點'p'內'$(「

你好

」)'將返回1 – Anurag 2010-07-14 19:08:57

+0

我能活接着就,隨即;如果他們正在生成第二個Html和Body,那麼事情應該打破;-) – 2010-07-14 19:15:49

0

從某種延伸到底層DOM API的我能想到這樣做的唯一途徑,一邊是獲取整個DOM樹的副本,然後做對的比較它。

在你的例子中,你的第二個跨度是不是沒有父對象?在有效的HTML中,跨度應始終有父級。只要這樣的規則,假設有效的HTML/XHTML,可能是有用的。

相關問題