40 votes

Comment puis-je tester si deux éléments DOM enveloppés par jQuery sont identiques ?

Je suis en train d'écrire une implémentation de liste triable en jQuery (à cause du fameux problème de scroll-in-div, y a-t-il de nouvelles solutions pour cela ?) Cependant, je ne sais pas comment comparer les éléments (déclenchés sur mousedown/mouseup) après qu'ils aient été enveloppés dans jQuery. Dans le prototype, c'était toujours ele.domNode.

C'est ce que j'essaie d'accomplir en substance...

<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>

66voto

SLaks Points 391154

Un objet jQuery peut être traité comme un tableau d'éléments DOM bruts.

Vous pouvez comparer les éléments bruts du DOM comme ceci :

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

14voto

Nick Craver Points 313913

Comparez les éléments DOM à l'intérieur comme ceci :

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

0voto

M7Jacks Points 124

C'est aussi une façon possible de résoudre ce problème. Vous pouvez comparer les attributs id puisqu'ils devraient être exactement les mêmes dans votre exemple ci-dessus.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X