HTML
<ul id="list" class="uol">
<li>beta</li>
<li>gamma</li>
<li>alpha</li>
<li>beta</li>
<li>zeta</li>
<li>BETA</li>
</ul>
<input id="find" type="button" value="Find" />
<input id="remove" type="button" value="Remove" />
的JavaScript
$('#find').click(function(){
$('#list li').filter(function(){
return $(this).siblings().text().toUpperCase().indexOf($(this).text().toUpperCase()) != -1;
}).addClass('selecteditems');
});
$('#remove').click(function(){
var removed = [];
$('.selecteditems').each(function(i, item){
if($.inArray($(item).text().toUpperCase(), removed) != -1){
$(item).remove();
}
else{
removed.push($(item).text().toUpperCase());
$(item).removeClass('selecteditems');
}
});
});
当你点击查找按钮,过滤器被应用到每一个<li>
项目在你的无序列表id为list
。然后获取所有其他<li>
项目,将它们的文本一起添加到一个字符串中并将其大写。然后它会检查当前的<li>
项目是否包含在该字符串中。如果它在那里,它会返回true,所以它会将类selecteditems
添加到它。
当您单击删除按钮时,它会删除除selecteditems
类别的第一个<li>
项目以外的所有项目,并从第一个<li>
项目中删除该类别。
Check it out here.
如果你想绝对确保你检查,对个别项目,而不是检查,对所有项目的字符串,你可以改变你的代码,寻找到这一点:
$('#find').click(function(){
$('#list li').filter(function(){
var sibs = [];
$.map($(this).siblings(), function(sibling){
sibs.push($(sibling).text().toUpperCase());
});
return $.inArray($(this).text().toUpperCase(), sibs) != -1;
}).addClass('selecteditems');
});
在这情况下的数据从何而来,它是从数据库或你有机会获得一个脚本? – zz1433
这是一个静态列表,如上例所示 –
pmandell,不完全重复,因为我也在寻找突出重复项目的代码+一些解释来帮助我理解,而不是仅仅复制/粘贴和完成任务 –