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>
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
}
J'ai toujours utilisé cela pour déterminer si un élément existe:
if ($('b:contains("Choose a sub category:")').length > 0) { /*do things*/}
if ($("b").has(":contains('Choose a sub category:')").length) {
/*Your Stuff Here*/
}