我有以下标记:
<ul class="list">
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
如何选择html值为5和6的li项并为其添加一个类?
答案 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,那么它将从集合中删除。
这匹配元素的整个文本,它不仅检查文本是否包含字符。
答案 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');