2010-03-05 15 views
37

Piszę sortowalną implementację list w jQuery (b/c niesławnego wydania scroll-in-div, wszelkie nowe rozwiązania tego?). Jednak nie wiem jak porównać elementy (uruchamiane na mousedown/mouseup) po tym, jak zostały zapakowane w jQuery. W prototypie zawsze był to ele.domNode.Jak mogę sprawdzić, czy dwa elementy DOM zawinięte w jQuery są takie same?

To co staram się osiągnąć w istocie ...

<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

e-Motiv tu jest wielki i nie wymienione w tej kwestii: http://stackoverflow.com/questions/2407825/how-to-compare-two-elements-in-jquery – billynoah

Odpowiedz

62

Obiekt jQuery można traktować jako tablicę surowych elementów DOM.

Można porównać surowych elementów DOM tak:

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

to działa i wydaje być preferowaną metodą, dzięki: s –

11

Porównaj elementów DOM wewnątrz tak:

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

ta metoda działa również, dzięki! –

0

Jest to również możliwe, sposób na rozwiązanie tego problemu. Możesz porównać atrybuty id, ponieważ powinny być dokładnie takie same w twoim przykładzie powyżej. Odpowiedź

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

Nic nie zyskuje na porównywaniu przez "id", a wywoływanie 'attr' jest z pewnością wolniejsze niż samo indeksowanie do obiektów jQuery. – Louis

+0

Dzięki za twój wgląd. Po prostu pomyślałem, że podzielę się rozwiązaniem, które działa również bez zwracania uwagi na wydajność w porównaniu z innymi rozwiązaniami, ponieważ PO nie powiedział, że szuka najszybszego rozwiązania. – M7Jacks

Powiązane problemy