jQuery如果"this"包含

Chr*_*ris 22 jquery contains this

我正在尝试将包含特定文本字符串的任何元素更改为红色.在我的例子中,我可以让子元素变为蓝色,但是我写的"替换我"行的方式是不正确的; 红色变化不会发生.我注意到"包含"方法通常写成:contains但我无法通过验证$(this).

$('#main-content-panel .entry').each(function() {
       $(this).css('color', 'blue');      
});         

$('#main-content-panel .entry').each(function() {
   if($(this).contains("Replace Me").length > 0) {
        $(this).css('color', 'red'); 
    }      
});
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/zatHH/

jko*_*era 73

:contains是一个选择器.要检查选择器是否适用于给定变量,您可以使用is:

if($(this).is(':contains("Replace Me")')) 
Run Code Online (Sandbox Code Playgroud)

然而,在这种情况下,Vega的解决方案更清晰.

  • 我需要这个,但是当我读到“If this is contains”时,这听起来像是最愚蠢的英语:) (3认同)

Sel*_*gam 17

我不认为.containsjQuery中有一个函数.有一个.contains函数,但该函数用于查看DOM元素是否是另一个DOM元素的后代.请参阅.contains的文档. (致@beezir的积分)

我想你正在寻找:contains选择器.请参阅下面的更多细节,

$('#main-content-panel .entry:contains("Replace Me")').css('color', 'red');
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/zatHH/1/


mbh*_*n88 12

您可以使用它match来查找特定元素内的文本

$('#main-content-panel .entry').each(function() {
    $(this).css('color', 'blue');      
});			

$('#main-content-panel .entry').each(function() {
    if($(this).text().match('Replace Me')) {
        $(this).css('color', 'red'); 
    }      
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="main-content-panel">
    <div class="entry">ABC</div>
    <div class="entry">ABC Replace Me</div>
    <div class="entry">ABC</div>
    <div class="entry">ABC Replace Me</div>
</div>
Run Code Online (Sandbox Code Playgroud)


Koe*_*eLy 5

我认为我们应该将文本转换为小写。最好检查小写和大写。

$('#main-content-panel .entry').each(function() {
    var ourText = $(this).text().toLowerCase(); // convert text to Lowercase
    if(ourText.match('replace me')) {
        $(this).css('color', 'red'); 
    }      
});
Run Code Online (Sandbox Code Playgroud)