web-dev-qa-db-fra.com

si contient du texte, lancez jquery

J'ai besoin d'exécuter un jquery uniquement si l'élément en gras contient du texte particulier. Qu'est-ce que je fais mal?

 <script>
 if ($('b:contains('Choose a sub category:')')) {

 $("td.colors_backgroundneutral").css("background-color","transparent");
 $("td.colors_backgroundneutral").children(':first-child').attr("cellpadding","0");
 };
 </script>
14
user764728

En plus d'utiliser des guillemets simples à l'intérieur des guillemets simples, ce qui rompt la chaîne, vous utilisez un sélecteur jQuery à l'intérieur d'une instruction if. Ce sélecteur filtre uniquement vos balises b à celles qui contiennent "Choisissez une sous-catégorie"; puis renvoie une liste de ces éléments. Il ne renvoie pas de booléen. Utilisez plutôt la méthode .contains(), comme ceci:

if($("b").contains("Choose a sub category")) {
   // do stuff 
}

Vous pouvez lire plus ici

EDIT: puisque la méthode .contains() semble obsolète, voici une solution JS pure:

var el = document.getElementById("yourTagId") // or something like document.getElementsByTagName("b")[0] if you don't want to add an ID.
if (el.innerHTML.indexOf("Choose a sub category") !== -1) {
    // do stuff
}
27
Thomas Shields

J'ai toujours utilisé cela pour déterminer si un élément existe:

if ($('b:contains("Choose a sub category:")').length > 0) { /*do things*/}
17
dev4life
 if ($("b").has(":contains('Choose a sub category:')").length) { 
 /*Your Stuff Here*/
 }
4
BTC