如何通过搜索其文本将特定类添加到li标记

时间:2013-06-11 15:03:08

标签: jquery

我有一个li代码列表。我想检查是否有任何包含特定文本的li代码。如果需要添加名为disabled的类到包含该特定文本的相应li标记。有人可以帮助我

<ul class="default">
      <li>Text 1</li>
      <li>Text 2</li>
      <li>Text 3</li>
      <li>Text 4</li>
      <li>Text 5</li>
</ul>

3 个答案:

答案 0 :(得分:1)

试试这个

$('li:contains("Text 4")').addClass("test");

Js Fiddle

答案 1 :(得分:0)

使用Jquery .contains()

$("li:contains(Text 1)")

此处示例jQuery :contains() Selector

答案 2 :(得分:0)

我为此制作了一个原型,在包含jQuery之后复制它:

//@Author Karl-André Gagnon
if(!$.fn.filterText) $.fn.filterText = function(text, caseSensitive){
    var returnedObj = $(),
        caseSensitive = caseSensitive || false,
        $this = $(this);
    if(typeof text == 'object'){
        for(var i = 0; i < text.length; i++){
            if(typeof text[i] == 'string'){
                console.log(i);
                returnedObj = returnedObj.add($this.filter(function(){
                    var search = caseSensitive ? text[i] : new RegExp(text[i], 'i')
                    return $(this).text().search(search) != -1;
                }))

            }
        }
    }else if(typeof text == 'string'){
        returnedObj = returnedObj.add($this.filter(function(){
            var search = caseSensitive ? text : new RegExp(text, 'i')
            return $(this).text().search(search) != -1;
        }))
    }
    return returnedObj;
}

然后你可以这样称呼它:

$('li').filterText(['text 1', 'text 2']).addClass('disable');
//Or
$('li').filterText('text 3').addClass('disable');

如果您想要区分大小写,也可以添加第二个aguemnt。

$('li').filterText('Text 3', true).addClass('disable');