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 } }
您可能想要尝试contains
select器:
if ($("#field > div.field-item:contains('someText')").length) { $("#somediv").addClass("thisClass"); }
另外,正如其他提到的,你必须使用==或===而不是=。