根据jQuery中的html值选择一个元素

时间:2012-02-28 17:53:20

标签: jquery html jquery-selectors

我有以下标记: <ul class="list"> <li>4</li> <li>5</li> <li>6</li> </ul>

如何选择html值为5和6的li项并为其添加一个类?

5 个答案:

答案 0 :(得分:10)

一个选项是:contains selector ...

$("li:contains(5),li:contains(6)").addClass("myClassName");

但是,由于它只是在查找该文字而不是匹配整个内容,因此它也会匹配<li>56</li><li>16</li>,等等。

所以,你可能应该做的是使用.filter(),如下所示:

$("li").filter(function () {
    var text = $(this).text();
    return text === "5" || text === "6"
}).addClass("myClassName");

答案 1 :(得分:4)

您可以使用.filter()

//setup object of the characters we want to match (we will be matching the keys, not values)
var whitelist = { 5 : 0, 6 : 0 };

//select all the list-item elements and filter them
var $selectedElements = $('.list').children().filter(function () {

    //returns true if the text of this element is one of the keys in the `whitelist` variable
    return ($(this).text() in whitelist);
});

如果你返回true,元素将保留在元素集中,如果你返回false,那么它将从集合中删除。

这匹配元素的整个文本,它不仅检查文本是否包含字符。

以下是演示:http://jsfiddle.net/jasper/ndcFg/2/

答案 2 :(得分:3)

使用:contains()选择器

$("li:contains('5')")

答案 3 :(得分:0)

$("ul.list li").each(function(){
  if( $(this).text() == '5' || $(this).text() == '6' ) {
    $(this).addClass('theClass');
  }
});

答案 4 :(得分:0)

我怀疑这个演示过于简化......而“值”则意味着文字

$('.list li').filter(function(){
    var txt=$(this).text();
    return txt==='4' || txt==='5';                      
}).addClass('someclass');