2010-05-20 6 views
102

J'utilise les sélecteurs de jQuery, en particulier sélecteur id:Déterminer si jQuery n'a trouvé aucun élément

$("#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 la déclaration suivante me donne: [object Object]

alert($("#idThatDoesnotexist")); 

Répondre

159

$('#idThatDoesnotexist').length est ce que vous cherchez. (Si elle ne trouve rien, cela === 0.) Donc, votre déclaration conditionnelle devrait probablement être:

if($('#id').length) { /* code if found */ } else { /* code if not found */ }

Vous obtenez un objet retourné par cette alerte, car jQuery (presque) retourne toujours le « objet jQuery » lorsque vous utilisez-le, qui est un wrapper pour les éléments trouvés par jQuery qui permet le chaînage de méthode.

+3

Vous n'avez pas besoin de zéro, $ ('# id'). Length est suffisant (zéro == false en javascript) – David

+10

@David le fait que vous n'avez pas _Need_ ne le rend pas nécessairement redondant, à première vue IMO, il est plus clair. – Abir

+1

@Abir: Cela ne fait que le rendre plus clair jusqu'à ce que vous soyez habitué à la syntaxe sans lui, testant la vérité plutôt que explicitement 0. Je suggère simplement de m'habituer à la syntaxe sans le '== 0', vous le verrez partout. –

23

Futuraprime est juste, mais vous pouvez réduire votre syntaxe en procédant comme suit:

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

Cela retourne vrai si l'élément existe et faux si elle ne fonctionne pas.

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

Ceci est la base, maintenant faire ce que vous voulez.

Questions connexes