если содержит определенный текст, то запустите jquery - PullRequest
14 голосов
/ 10 июня 2011

Мне нужно запускать jquery, только если жирный элемент содержит определенный текст.Что я делаю не так?

 <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>

Ответы [ 3 ]

27 голосов
/ 10 июня 2011

Помимо использования одинарных кавычек внутри одинарных кавычек, которые разбивают строку, вы используете селектор jQuery внутри оператора if. Этот селектор фильтрует только ваши b теги на те, которые содержат «Выберите подкатегорию»; а затем возвращает список этих элементов. Не возвращает логическое значение. Вместо этого используйте метод .contains(), например:

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

Вы можете прочитать больше здесь

РЕДАКТИРОВАНИЕ: , поскольку метод .contains() устарел, вот чистое решение JS:

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
}
17 голосов
/ 10 июня 2011

Я всегда использовал это, чтобы определить, существует ли элемент:

if ($('b:contains("Choose a sub category:")').length > 0) { /*do things*/}
4 голосов
/ 13 мая 2013
 if ($("b").has(":contains('Choose a sub category:')").length) { 
 /*Your Stuff Here*/
 }
...