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

47 jquery

我正在尝试检查jQuery,如果div包含一些文本,然后添加一个类,如果它.

所以我写了这样的东西:

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

我没有让这个工作.

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

<div id="somediv"></div>
Run Code Online (Sandbox Code Playgroud)

这是不正确的?

Aym*_*ieh 90

您的代码包含两个问题:

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

我建议如下:

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


小智 15

是的,我现在想起来了.它工作正常!

if($("div:contains('CONGRATULATIONS')").length)
                        {
                            $('#SignupForm').hide(500);
                        }
Run Code Online (Sandbox Code Playgroud)


Tra*_*er1 6

if( $("#field > div.field-item").text().indexOf('someText') >= 0)
Run Code Online (Sandbox Code Playgroud)

有些浏览器会包含空格,有些则不会。 >=这里很合适。否则相等是双重相等==


Can*_*var 5

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

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