如果包含某些文本,则运行jquery

use*_*728 14 jquery text if-statement contains

我只有在粗体元素包含特定文本时才需要运行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>
Run Code Online (Sandbox Code Playgroud)

Tho*_*lds 27

除了在单引号内使用单引号(打破字符串)之外,您还在if语句中使用了jQuery选择器.此选择器仅将b标签过滤为包含"选择子类别"的标签; 然后返回这些元素的列表.它不返回布尔值.相反,使用.contains()方法,如下所示:

if($("b").contains("Choose a sub category")) {
   // do stuff 
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多

编辑:由于该.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
}
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,似乎这个`jQuery().contains`方法不再存在,或者至少我尝试使用它会触发`no such function call`的错误.`jQuery.contains`存在,但这是专门用于DOM元素,而不是文本字符串.就个人而言,我宁愿使用方法调用而不是构造一个`:contains`选择器,所以如果jQuery删除了它,那就相当烦人了. (4认同)

dev*_*ife 17

我一直用它来确定元素是否存在:

if ($('b:contains("Choose a sub category:")').length > 0) { /*do things*/}
Run Code Online (Sandbox Code Playgroud)