2010-03-05 81 views
37

我在jQuery中编写了一个可排序的列表实现(臭名昭着的scroll-in-div问题的b/c,任何新的解决方案?)。但是,我不知道如何比较jQuery中包含的元素(在mousedown/mouseup上触发)。在原型中,它总是ele.domNode。如何测试两个jQuery包装的DOM元素是否相同?

这就是我想在本质上实现......

<div id="cheese"></div> 
<div id="burger"></div> 

<script> 

// Some dom nodes wrapped in jquery 
var ele1 = $('#cheese'); 
var ele2 = $('#burger'); 
var ele3 = $('#burger'); 

// Is the dom node wrapped in ele1 (#cheese) the same as in ele2 (#burger)? 
if (ele1 == ele2) 
{ 
    // Should never be true 
} 

// Is the dom node wrapped in ele2 (#burger) the same as in el32 (#burger)? 
if (ele2 == ele3) 
{ 
    // Should always be true 
} 

</script> 
+0

电子MOTIV的答案是伟大的,在这个问题上没有提到的:http://stackoverflow.com/questions/2407825/how-to-compare-two-elements-in-jquery – billynoah 2016-02-03 23:46:12

回答

62

一个jQuery对象可以被视为原始DOM元素的数组。

您可以比较原始的DOM元素是这样的:

if(ele2[0] === ele3[0]) 
+0

这部作品似乎与成为首选方法,谢谢:s – 2010-03-05 21:01:40

11

比较DOM元素里面是这样的:

if (ele1.get(0) == ele2.get(0)) 
+0

这个方法也可以,谢谢! – 2010-03-05 21:01:24

0

这也是解决这个问题的一个可行的办法。您可以比较id属性,因为它们应该与上例中的完全相同。这里

ele1.attr("id") == ele2.attr("id"); //returns false 
ele2.attr("id") == ele3.attr("id"); //returns true 
+0

通过'id'进行比较没有任何好处,并且调用'attr'肯定比索引jQuery对象慢。 – Louis 2014-10-29 22:00:35

+0

感谢您的洞察。我只是认为我会分享一个解决方案,与其他解决方案相比,性能不考虑性能,因为OP没有说他正在寻找最快的解决方案。 – M7Jacks 2014-10-30 18:14:36

相关问题