jquery:检查div是否包含文本,然后执行操作

我试图在jQuery中检查,如果div包含一些文本,然后添加一个类,如果它。

所以我写了这样的东西:

if( $("#field > div.field-item").text().indexOf('someText') = 0) { $("#somediv").addClass("thisClass"); } 

我没有得到这个工作。

 <div id="field"><div class="field-item">someText</div></div> <div id="somediv"></div> 

这是不正确的?

你的代码包含两个问题:

  • JavaScript中的等号运算符是== ,not =
  • jQuery.text()将匹配元素的所有文本节点连接成一个string。 如果您有两个连续的元素,其中第一个包含'some' ,第二个包含'Text' ,那么您的代码将错误地认为存在包含'someText'的元素。

我build议改为:

 if ($('#field > div.field-item:contains("someText")').length > 0) { $("#somediv").addClass("thisClass"); } 

是的,我现在想了想。 它工作正常!

 if($("div:contains('CONGRATULATIONS')").length) { $('#SignupForm').hide(500); } 

IT工作正常

 if( $("#field > div.field-item").text().indexOf('someText') >= 0) 

一些浏览器将包括空白,其他浏览器不会。 >=在这里是适当的。 否则,等于double equals ==

艾曼是对的,但是,你也可以这样使用它:

 if( $("#field > div.field-item").text().indexOf('someText') >= 0) { $("#somediv").addClass("thisClass"); } 

为什么不简单

 var item = $('.field-item'); for (var i = 0; i <= item.length; i++) { if ($(item[i]).text() == 'someText') { $(item[i]).addClass('thisClass'); //do some other stuff here } } 

您可能想要尝试containsselect器:

 if ($("#field > div.field-item:contains('someText')").length) { $("#somediv").addClass("thisClass"); } 

另外,正如其他提到的,你必须使用==或===而不是=。