34 votes

Pourquoi $ ("body") == $ ("body") renvoie-t-il false?

Comment se fait-il que l'équation dans le titre soit fausse? Comment vérifier si deux sélecteurs jQuery pointent sur le même objet DOM?

57voto

BoltClock Points 249668

La comparaison de deux distinctes jQuery objets parce que vous appelez $() deux fois (une fois pour chaque côté de l'équation), et comme MooGoo explique jQuery crée de nouveaux objets wrappers pour chaque fois que vous l'appelez. C'est pourquoi la comparaison finit par retourner false.

Vous pouvez extraire un objet DOM à partir de chaque objet jQuery en utilisant get() tableau ou de déréférencement, puis de comparer ces éléments. La suite les deux renvoie true parce que à la fois identiques sélecteurs de correspondre à la même body DOM élément:

$('body').get(0) == $('body').get(0)
$('body')[0] == $('body')[0]

Si vous voulez tester contre un sélecteur jQuery, utilisez is(). Notez que, à moins que votre sélecteurs sont identiques, les sélecteurs vous utilisez ne correspondent pas nécessairement aux mêmes éléments du DOM (c'est toujours mieux d'utiliser la ci-dessus). Cela revient aussi vrai:

$('body').is('body')

35voto

MooGoo Points 11094

Parce que jQuery crée un nouvel objet wrapper pour chaque appel $ , tous les objets sont distincts en Javascript, même s'ils ont exactement les mêmes propriétés / méthodes.

D'autre part, document.body == document.body seraient évalués à true .

11voto

pettazz Points 389

Utilisez $ .is ()

http://api.jquery.com/is/

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