是否可以在jQuery API或DOM中檢查頁面上是否存在元素?如何區分生成元素和選定元素之間的區別?
考慮以下兩個變量:
var selected = $('span#mySpan');
var created = $('<span id="mySpan">Testing</span>');
雙方將返回包含跨度元素的jQuery對象。有沒有什麼辦法可以告訴第一個存在於頁面上,而第二個不存在?
是否可以在jQuery API或DOM中檢查頁面上是否存在元素?如何區分生成元素和選定元素之間的區別?
考慮以下兩個變量:
var selected = $('span#mySpan');
var created = $('<span id="mySpan">Testing</span>');
雙方將返回包含跨度元素的jQuery對象。有沒有什麼辦法可以告訴第一個存在於頁面上,而第二個不存在?
嘗試
$(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;
從某種延伸到底層DOM API的我能想到這樣做的唯一途徑,一邊是獲取整個DOM樹的副本,然後做對的比較它。
在你的例子中,你的第二個跨度是不是沒有父對象?在有效的HTML中,跨度應始終有父級。只要這樣的規則,假設有效的HTML/XHTML,可能是有用的。
美麗簡潔明瞭:) – 2010-07-14 19:02:53
它是簡單的,但不是防呆:)考慮一個節點'p'內'$(「
你好
」)'將返回1 – Anurag 2010-07-14 19:08:57我能活接着就,隨即;如果他們正在生成第二個Html和Body,那麼事情應該打破;-) – 2010-07-14 19:15:49