2010-03-05 82 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

相關問題