我正在尝试检查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>
这是不正确的?
答案 0 :(得分:85)
您的代码包含两个问题:
==
,而不是=
。jQuery.text()
将匹配元素的所有文本节点连接成一个字符串。如果您有两个连续的元素,其中第一个包含'some'
而第二个包含'Text'
,则您的代码会错误地认为存在包含'someText'
的元素。我建议如下:
if ($('#field > div.field-item:contains("someText")').length > 0) {
$("#somediv").addClass("thisClass");
}
答案 1 :(得分:14)
是的,我现在想起来了。它工作正常!!!
if($("div:contains('CONGRATULATIONS')").length)
{
$('#SignupForm').hide(500);
}
答案 2 :(得分:4)
if( $("#field > div.field-item").text().indexOf('someText') >= 0)
有些浏览器会包含空格,有些则不会。 >=
在这里是合适的。否则,等于是等于==
答案 3 :(得分:3)
Ayman是对的,但你也可以这样使用它:
if( $("#field > div.field-item").text().indexOf('someText') >= 0) {
$("#somediv").addClass("thisClass");
}
答案 4 :(得分:3)
为什么不简单
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
}
}
答案 5 :(得分:1)
您可能想尝试contains
选择器:
if ($("#field > div.field-item:contains('someText')").length) {
$("#somediv").addClass("thisClass");
}
另外,正如其他提到的那样,你必须使用==或===而不是=。
答案 6 :(得分:1)
这是2020年的经典Javascript解决方案:
const fieldItem = document.querySelector('#field .field-item')
fieldItem.innerText === 'someText' ? fieldItem.classList.add('red') : '';
答案 7 :(得分:0)
这应该可以工作并且不区分大小写
js(LEGACY) {
binaries.executable()
browser {
commonWebpackConfig {
cssSupport.enabled = true
}
webpackTask {
output.libraryTarget = "umd"
}
}
}
答案 8 :(得分:0)
HTML
<div id="field"><div class="field-item">someText</div></div>
<div id="somediv"></div>
JS
$( document ).ready(function() {
if ($('div.field-item:contains("someText")').length > 0) {
$('div#somediv').append("<p>someText was there, so class 'thisClass' was added").addClass("thisClass")
.css("border","2px red");
}
});
JSfiddle:
<块引用>