2010-10-10 4 views
3

J'utilise la méthode .length dans une instruction conditionnelle qui interroge la page de la présence d'un objet externe chargé (je ne peux pas le style avec jQuery jusqu'à ce qu'il existe):Comment vérifier la présence d'un élément?

function hackyFunction() { 
    if($('#someObject').length<1) 
    { setTimeout(hackyFunction,50) } 
    else 
    { $('#someObject').someMethod() }} 

length est le meilleur moyen de le faire?

Répondre

4

Oui vous devez utiliser .length. Vous ne pouvez pas utiliser if ($('#someObject')) ... car le jQuery selectors renvoie un objet jQuery et tout objet est véridique en JavaScript.

2

Oui, .length est acceptable et est habituellement ce que j'utilise.

7

Si vous cherchez simplement un élément spécifique, vous pouvez simplement utiliser document.getElementById

function hackyFunction() { 
    if (document.getElementById("someObject")) { 
     // Exist 
    } else { 
     // Doesn't exist 
    } 
} 
+1

+1 pour bon vieux js de vanille;) – Andreas

+1

Je ne sont pas d'accord. Si vous avez plusieurs vérifications pour un élément, le script sera rempli de fonctions gEBI, ce qui est inutile si vous avez * déjà * inclus la bibliothèque ** entière ** jQuery. Pour ne pas mentionner, dans cet extrait spécifique, vous devrez l'appeler * deux fois * sauf si vous ne le cachez pas avant le 'if..else'. Et si vous utilisez gEBI partout, n'oubliez pas d'entourer jQuery ou à moins d'invoquer des méthodes prototypiques, elles ne seront pas définies. –

+1

Vous avez absolument raison, mais ... ^^ Dans l'extrait de code du TO, deux objets jquery sont invoqués pour le même élément. De plus, le TO a choisi le tag 'javascript' seulement. Pour cela, la solution vanilla-js est absolument appropriée. – Andreas

2

Si vous êtes à la recherche d'une carte d'identité, il ne devrait jamais être un de ceux, vous pouvez aussi écrire:

if($('#someObject')[0]) 
0

Avec jQuery, la durée de vérification fonctionne très bien.

if (!$('#someObject').length) { 
    console.log('someObject not present'); 
} 

Bien sûr avec JavaScript vanille, vous pouvez simplement vérifier avec document.getElementById (si jamais on obtient des éléments par id)

if (document.getElementById('someObject')) { 
    console.log('someObject exists'); 
} 
Questions connexes