Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何区分生成的元素和选定的元素之间的差异?_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 如何区分生成的元素和选定的元素之间的差异?

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

在jQueryAPI或DOM中,是否可以检查页面上是否存在元素

考虑以下两个变量:

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
是“正确”的方式,但不支持跨平台。