Javascript 如何区分生成的元素和选定的元素之间的差异?
在jQueryAPI或DOM中,是否可以检查页面上是否存在元素 考虑以下两个变量:Javascript 如何区分生成的元素和选定的元素之间的差异?,javascript,jquery,dom,Javascript,Jquery,Dom,在jQueryAPI或DOM中,是否可以检查页面上是否存在元素 考虑以下两个变量: var selected = $('span#mySpan'); var created = $('<span id="mySpan">Testing</span>'); var selected=$('span#mySpan'); 创建的变量=$(“测试”); 两者都将返回一个包含span元素的jQuery对象。有没有办法判断第一个存在于页面上,而第二个不存在?试试看 $(creat
var selected = $('span#mySpan');
var created = $('<span id="mySpan">Testing</span>');
var selected=$('span#mySpan');
创建的变量=$(“测试”);
两者都将返回一个包含span元素的jQuery对象。有没有办法判断第一个存在于页面上,而第二个不存在?试试看
$(created).parents("html").length
这里有更多的方法可以做到这一点:
$(document).find(created).length
$(created).parents(document).length
或者使用为此任务构建的方法。它只接受DOM节点,所以我们需要从jQuery对象中展开它
$.contains(document, created.get(0))
纯DOM的方法是使用该方法。在上面的例子中
// get the DOM node
var createdNode = created.get(0);
var position = document.compareDocumentPosition(createdNode);
var isNotInDocument = (position & Node.DOCUMENT_POSITION_DISCONNECTED) != 0;
除了对底层domapi进行某种扩展之外,我能想到的唯一方法是获取整个DOM树的副本,然后与之进行比较
在您的示例中,您的第二个span不是没有父级吗?在有效的HTML中,跨度应始终具有父级。只有这样的规则,假设有效的HTML/XHTML,可能是有用的。简单的漂亮:它是简单的,但不是傻瓜证明:考虑一个节点<代码> p<代码>代码> > $(“ hello < /p>”)<代码>返回1。如果他们正在生成第二个Html和正文,那么事情就应该破裂;-)<代码>$。包含的看起来像是赢家。需要注意的是,虽然
ComparedDocumentPosition
是“正确”的方式,但不支持跨平台。