web-dev-qa-db-fra.com

Comment compareriez-vous les objets jQuery?

J'essaie donc de comprendre comment comparer deux objets jQuery, pour voir si l'élément parent est le corps d'une page.

voici ce que j'ai

if ( $(this).parent() === $('body') ) ...

Je sais que c'est faux, mais si quelqu'un comprend ce à quoi je veux en venir, pourrait-il m'indiquer la bonne façon de procéder?

100
Kyle Hotchkiss

Vous devez comparer les éléments bruts du DOM, par exemple:

if ($(this).parent().get(0) === $('body').get(0))

ou

if ($(this).parent()[0] === $('body')[0])
157
CMS

Pourquoi pas:

if ($(this).parent().is("body")) {
  ...
}

?

59
cletus

La mise en boucle n'est pas requise, le test du premier nœud n'est pas requis. Pratiquement rien n'est requis sauf de s'assurer qu'ils ont la même longueur et partagent des nœuds identiques. Voici un petit extrait de code. Vous voudrez peut-être même convertir ceci en un plugin jquery pour vos propres utilisations.

jQuery(function($) {
  // Two separate jQuery references
  var divs = $("div");
  var divs2 = $("div");

  // They are equal
  if (divs.length == divs2.length && divs.length == divs.filter(divs2).length) {         

  // They are not
  } else {}
});
18
tbranyen

Je suis tombé sur ces réponses et je me suis demandé laquelle était la meilleure. Tout dépend de vos besoins, mais le plus simple à saisir, à lire et à exécuter est le meilleur, bien sûr. Voici le test que j'ai fait pour prendre une décision.

http://jsperf.com/jquery-objects-comparison

2
Salketer