Jquery:检查div是否包含文本,然后是动作

时间:2009-05-23 22:08:14

标签: jquery

我正在尝试检查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>

这是不正确的?

9 个答案:

答案 0 :(得分:85)

您的代码包含两个问题:

  • JavaScript中的等于运算符为==,而不是=
  • 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:

<块引用>

https://jsfiddle.net/Loqctuaf/