2011-06-17 3 views
4

J'ai utilisé avec succès la fonction , mais je ne l'ai jamais utilisée avec un if-statement. Mon code ci-dessous ne semble pas fonctionner quand il le devrait. Je dis essentiellement si H1 contient le mot "vrai", faire quelque chose, sinon faire autre chose. Actuellement, il montre seulement le premier bit de code, peu importe ce qui est dans le H1 .. il ne montre jamais la partie else.jQuery si H1: contient un mot faire quelque chose

<H1>This h1 contains the word Star</H1> 

if ($("H1:contains('True')")) { 
    var test= "<div>IT DID CONTAIN THE WORD TRUE!</div>"; 
    $('h1').append(test); 

} else { 
    var test= "<div>IT DID <b>NOT</b> CONTAIN THE WORD TRUE!</div>"; 
    $('h1').append(test);      
} 
+0

duplication possible de [si contient un certain texte, puis exécuter jquery] (http://stackoverflow.com/questions/6309870/if-contains-certain-text-then-run-jquery) –

Répondre

10

Vous devez vérifier la propriété length de la collection résultant:

if ($("H1:contains('True')").length) { 
    ... 

Depuis $("H1:contains('True')") retourne un objet et des objets toujours à évaluer truthy.

+0

lol duh, merci beaucoup beaucoup j'ai regardé le code à long = p – ToddN

1

$("H1:contains('True')") est un sélecteur. Il renvoie un jQuery object, pas un booléen. Pour vérifier que le sélecteur a trouvé des objets, check the length property:

if ($("H1:contains('True')").length) { 
    // stuff... 
} 
0

essayer cette

if ($("H1:contains('True')").length > 0) { 
    var test= "<div>IT DID CONTAIN THE WORD TRUE!</div>"; 
    $('h1').append(test);      
} else { 
    var test= "<div>IT DID <b>NOT</b> CONTAIN THE WORD TRUE!</div>"; 
    $('h1').append(test);      
} 
+0

Le test serait soit '> 0' ou'> = 1'. –

+0

corrigé !, merci – Dave

0

Le problème est que $("H1:contains('True')") retourne toujours true parce qu'il est toujours un objet. Ce que vous voulez vraiment vérifier, c'est s'il contient des éléments.

if ($("H1:contains('True')").length) { 

Maintenant, il va retourner la partie else.

Remarque: Je crois que :contains est sensible à la casse.

Questions connexes