是否可以在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