如何向jQuery中包含特定字符串的元素添加类?

如何向jQuery中包含特定字符串的元素添加类?,jquery,Jquery,我有一份清单: <ul> <li>item 1</li> <li>item 2</li> <li>item 3</li> <li>item 4</li> <li>item 5</li> </ul> 项目1 项目2 项目3 项目4 项目5 如何将类“item-3”添加到包含和标记之间的“item 3”的li元素中 提前感谢。请尝

我有一份清单:

<ul>
  <li>item 1</li>
  <li>item 2</li>
  <li>item 3</li>
  <li>item 4</li>
  <li>item 5</li>
</ul>
  • 项目1
  • 项目2
  • 项目3
  • 项目4
  • 项目5
如何将类“item-3”添加到包含
  • 标记之间的“item 3”的li元素中

    提前感谢。

    请尝试以下方法

    $(document).ready(function () {
      $('ul li').each(function () {
        if ($(this).text() === "item 3") {
          $(this).addClass('item-3');
        }
      });
    });
    
    小提琴:

    从文档()中:

    匹配的文本可以直接显示在选定的元素中 该元素的任何子元素,或其组合。如同 属性值选择器,括号内的文本:contains() 可以用单字书写,也可以用引号括起来。这个 文本必须有匹配的大小写才能选择


    这里有一个jsiddle:

    可以正常工作,但我认为没有必要首先选择on,只是作为一个旁注:
    :contains()
    选择器区分大小写。不区分大小写的搜索需要
    .filter()
    和一个自定义函数。+1 FWIW;这比使用
    :contains
    更快。这里有一个jsperf来证明:@Jasper我以前从未见过这种景象。太棒了。过滤器是完成这类任务的最快方法还是特定情况下的方法?@Zero21xxx我不能马上说。我通常在特定情况下使用jsperf来查看什么是最快的方法。需要记住的是,不同的浏览器会给出不同的结果,这在旧浏览器(…IE6)中尤其如此。+1 FWIW,这是介于:
    :contains()
    $。each()
    .filter()
    之间最快的方法。这里有一些证据:
    $('li:contains("item 3")').addClass('item-3');
    
    $("li").each(function(){
        if($(this).text() == "Item 3"){
            $(this).addClass("item-3");
        }
    });
    
    $('li:contains("item 3")').addClass('item-3');
    
    $('li').filter(function(){
        return $(this).text() === 'item 3'
    }).addClass('yourClass');