Déterminer si jQuery n'a trouvé aucun élément


127

J'utilise les sélecteurs de jQuery, en particulier le sélecteur d'id:

$("#elementId")...

Comment dois-je déterminer si jQuery a trouvé l'élément ou non? Même si l'élément avec l'ID spécifié n'existe pas, l'instruction suivante me donne:[object Object]

alert($("#idThatDoesnotexist"));

Réponses:


188

$('#idThatDoesnotexist').lengthest ce que vous recherchez. (S'il ne trouve rien, ce sera le cas === 0.) Donc, votre instruction conditionnelle devrait probablement être:

if ($ ('# id'). length) {/ * code si trouvé * /} else {/ * code si non trouvé * /}

Vous obtenez un objet renvoyé par cette alerte car jQuery renvoie (presque) toujours l '"objet jQuery" lorsque vous l'utilisez, qui est un wrapper pour les éléments trouvés par jQuery qui permet le chaînage de méthodes.


3
Vous n'avez pas besoin du zéro, $ ('# id'). La longueur est suffisante (zéro == false en javascript)
David Hellsing

13
@David le fait que vous n'en ayez pas besoin ne le rend pas nécessairement redondant, à première vue IMO, cela le rend plus clair.
Abir

1
@Abir: Cela ne fait que rendre les choses plus claires jusqu'à ce que vous soyez habitué à la syntaxe sans elle, en testant la véracité plutôt que explicitement 0. Je suggère simplement de vous habituer à la syntaxe sans le == 0, vous le verrez partout.
Scott Stafford le

@ScottStafford, pour plus de jeu, vous pouvez également utiliser if (!!$('#id').length), qui font un cast booléen.
Daniele Vrut

6
Vous devez également vous demander si les avantages de sauvegarder quelques caractères compensent la confusion potentielle lorsqu'une personne ne connaissant pas les nuances de Javascript lit le code. Pas de meilleure pratique en ce qui concerne la maintenabilité à mon avis.
Matt Carr

26

Futuraprime a raison, mais vous pouvez raccourcir votre syntaxe en procédant comme suit:

if ($("#id").length) {
   //at least one element was found
} else {
   //no elements found
}

11
!$.isEmptyObject($.find('#id'))

Cela retournera true si l'élément existe et false dans le cas contraire.


7
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined
$('#my_selector')[0] !== undefined

C'est la base, maintenant faites ce que vous voulez.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.