web-dev-qa-db-fra.com

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

J'écris une implémentation de liste triable dans jQuery (à propos du fameux problème scroll-in-div, de nouvelles solutions pour cela?). Cependant, je ne sais pas comment comparer les éléments (déclenchés par mousedown/mouseup) une fois qu’ils ont été enveloppés dans jQuery. En 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>
40
John Himmelman

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])
65
SLaks

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

if (ele1.get(0) == ele2.get(0))
13
Nick Craver

C'est aussi un moyen possible de résoudre ce problème. Vous pouvez comparer les attributs id car 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
0
M7Jacks