2009-05-24 6 views
22

Que retourne si $ ('# id') ne correspond à rien? Je pensais que ce serait nul ou faux ou quelque chose de similaire si j'ai essayé de vérifier comme ceci:

var item = $('#item'); 
if (!item){ 
    ... 
} 

Mais cela n'a pas fonctionné.

Répondre

44

Vous pouvez trouver combien d'éléments ont été comparés à l'aide:

$('selector').length 

Pour vérifier si aucun élément ont été appariés, utilisez:

var item = $('#item'); 
if (item.length == 0) { 
    // ... 
} 
+5

Oui, c'est la bonne façon. Pour répondre à la question, cependant, il renvoie un objet/tableau d'éléments DOM qui correspondent. Et la propriété 'length' peut être utilisée sur n'importe quel objet javascript (array, string, etc ...) pour en déterminer la longueur (nombre d'éléments, nombre de caractères, etc ...). – KyleFarris

+2

il suffit d'utiliser if (item.length) – redsquare

5

Objet jQuery ne contenant aucun noeud DOM.

Vous devriez pouvoir utiliser

var item = $('#item'); 
if (!item[0]){ 
    ... 
} 

pour votre contrôle d'existence.

1

Un alias de l'attribut de longueur est la méthode de taille() . Donc, vous pouvez également interroger essentiellement:

$ ("sélecteur") taille()

pour voir combien d'éléments sont appariés..

7

Alors que $('selector').length est idéal pour trouver le nombre d'objets correspondant à votre sélecteur, c'est en fait totalement inutile. La chose à propos de jQuery est que toutes les fonctions basées sur le sélecteur utilisent la longueur en interne, donc vous pouvez juste faire $(selector).hide() (ou quoi que ce soit) et il ne prend aucune action pour un ensemble vide.

+0

C'est généralement correct, mais de temps en temps vous avez juste besoin de vérifier l'existence d'un élément. Bon point cependant, donc de toute façon, puisque vous avez raison pour la plupart des cas. –

Questions connexes