如何向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');