我们如何比较两个HTML元素,不管它们是否相同?
我试过这玩意儿,但没成功
<div class="a"> Hi this is sachin tendulkar </div>
<div class="a"> Hi this is sachin tendulkar </div>
然后单击按钮,我调用了一个check()函数
var divs = $(".a");
alert(divs.length); // Shows 2 here which is correct
if (divs.get(0) == divs.get(1)) alert("Same");
但这是行不通的。在两个div中,一切都是一样的。除此之外,我们如何比较两个HTML元素是否完全相同。包括它们的innerHTML、className、Id和它们的属性。
这可行吗?
实际上,我有两个HTML文档,我想从这两个文档中删除相同的内容,以便两个元素可以具有相同的id。
PS:在克劳德的宝贵评论之后更新。如果我们将两个元素作为字符串进行比较,我们将不会得到匹配,因为它们的属性顺序可能不同,因此唯一的选择是迭代每个子属性并进行匹配。我仍然需要弄清楚完全有效的实现策略。
发布于 2013-10-13 14:37:24
您可以使用:
element1.isEqualNode(element2);
在您的特定示例中:
var divs = $(".a");
if ( divs.get(0).isEqualNode(divs.get(1)) ) alert("Same");
DOM Level 3 Core Spec包含了所有的细节。本质上,如果两个节点具有匹配的属性、后代和后代的属性,则返回true。
还有一个类似的.isSameNode(),它仅在两个元素是同一个节点时才返回true。在您的示例中,这些节点不是相同的节点,但它们是相等的节点。
发布于 2012-05-21 13:21:15
为什么不用简单的方法呢?
<div id="div1"><div class="a"> Hi this is sachin tendulkar </div></div>
<div id="div2"><div class="a"> Hi this is sachin tendulkar </div></div>
if($('#div1').html() == $('#div2').html())
alert('div1 & div2 are the same');
else
alert('div1 & div2 are different');
发布于 2012-05-21 13:22:07
这是如何编码的?
var d1 = document.createElement("div");
d1.appendChild(divs.get(0));
var d2 = document.createElement("div");
d2.appendChild(divs.get(1));
if (d1.innerHTML == d2.innerHTML) ?
https://stackoverflow.com/questions/10679762
复制相似问题