642 votes

Vérifier si l’objet est un objet jQuery

Y a-t-il un moyen rapide de vérifier si un objet est un objet jQuery ou un objet JavaScript natif ?

exemple :

évidemment, le code ci-dessus fonctionne, mais il n’est pas sûr. Vous pouvez éventuellement ajouter une touche de sélection pour le `` objet et obtenir le même résultat. Y a-t-il une meilleure façon de s’assurer que l’objet est en fait un objet jQuery ?

Quelque chose à``

922voto

Crescent Fresh Points 54070

Vous pouvez utiliser l' instanceof opérateur:

obj instanceof jQuery

Explication: l' jQuery de la fonction (aka $) est implémenté comme une fonction constructeur. Constructeur fonctions sont appelés à l' new préfixe.

Lorsque vous appelez $(foo), en interne jQuery traduit ce new jQuery(foo)1. JavaScript produit pour initialiser this dans le constructeur de la fonction au point d'une nouvelle instance de l' jQuery, la valeur des propriétés à celles trouvées sur jQuery.prototype (aka jQuery.fn). Ainsi, vous obtenez un new objet où instanceof jQuery est true.


1C'est en fait new jQuery.prototype.init(foo): le constructeur de la logique a été déchargé à un autre constructeur de la fonction appelée init, mais le concept est le même.

112voto

mt81 Points 1041

Vous pouvez également utiliser la propriété .jquery comme décrit ici : http://api.jquery.com/jquery-2/

32voto

Corey Sunwold Points 6330

Découvrez l’opérateur instanceof .

27voto

jherax Points 657

Le meilleur moyen de vérifier l'instance d'un objet est à travers instanceof opérateur:

obj instanceof jQuery

Mais parfois, il peut échouer dans le cas de plusieurs jQuery instances sur un document. @Gueorgui Ivankin mentionné:

si j'ai $ dans mon espace de noms courant de pointage à l' jQuery2 et j'ai un objet de l'espace de noms (où $ est jQuery1) alors je n'ai aucun moyen d'utiliser instanceof pour vérifier si cet objet est un jQuery objet

Pour surmonter ce problème, nous pouvons utiliser l'approche par s'enquérir de l' jquery de la propriété en obj

'jquery' in obj

Toutefois, si vous essayez d'effectuer cette vérification avec des valeurs primitives, il lèvera une erreur, de sorte que vous pouvez modifier la précédente vérification en assurant obj un Object

'jquery' in Object(obj)

Même si la manière n'est pas le plus sûr (vous pouvez créer l' 'jquery' propriété dans un objet), on peut améliorer la validation en travaillant avec les deux approches:

if (obj instanceof jQuery || 'jquery' in Object(obj)) { }

3voto

johnchou Points 21
return el instanceof jQuery ? el.size() > 0 : (el && el.tagName);

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