128 votes

comment comparer deux éléments en jquery

var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];
alert(a==b)
alert(a==$(b))

C'est toujours faux. Comment comparer deux éléments en jQuery ?

merci

330voto

R-U-Bn Points 1749

Pour mémoire, jQuery dispose d'une fonction is() pour cela :

a.is(b)

Notez que a est déjà une instance de jQuery.

145voto

Darin Dimitrov Points 528142

Vous pourriez comparer les éléments du DOM. N'oubliez pas que les sélecteurs jQuery renvoient des tableaux qui ne seront jamais égaux au sens de l'égalité des références.

Assumant :

<div id="a" class="a"></div>

ceci :

$('div.a')[0] == $('div#a')[0]

retourne vrai.

13voto

Anurag Points 66470

Chaque fois que vous appelez la fonction jQuery(), un nouvel objet est créé et renvoyé. Ainsi, même les contrôles d'égalité sur les mêmes sélecteurs échoueront.

<div id="a">test</div>

$('#a') == $('#a') // false

L'objet jQuery résultant contient un tableau d'éléments correspondants, qui sont essentiellement des objets DOM natifs tels que HTMLDivElement qui font toujours référence au même objet, vous devez donc vérifier leur égalité en utilisant l'index du tableau comme Darin l'a suggéré.

$('#a')[0] == $('#a')[0] // true

2voto

gnarf Points 49213

Exemple aléatoire AirCoded de test de "l'égalité des ensembles" en jQuery :

$.fn.isEqual = function($otherSet) {
  if (this === $otherSet) return true;
  if (this.length != $otherSet.length) return false;
  var ret = true;
  this.each(function(idx) { 
    if (this !== $otherSet[idx]) {
       ret = false; return false;
    }
  });
  return ret;
};

var a=$('#start > div:last-child');
var b=$('#start > div.live')[0];

console.log($(b).isEqual(a));

-1voto

Frank Schwieterman Points 13519

Les résultats que vous obtenez à partir d'une collection jQuery ne prennent pas en charge la comparaison par ensemble. Vous pouvez utiliser la comparaison des membres individuels un par un, il n'y a pas d'utilitaires pour cela que je sache dans jQuery.

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