我有下面的列表项目
<ul id="lxx" class="lst">
<li>arnold</li>
<li>Becky</li>
<li>Arnold</li>
<li>KathY</li>
<li>Carol</li>
<li>ARNold</li>
<li>carol</li>
</ul>我正在使用这段代码,它将一个类“someClass”添加到所有重复多次的项中。
$('#lxx li').filter(function(){
return $(this).siblings().text().toUpperCase()
.indexOf($(this).text().toUpperCase()) != -1;
}).addClass('someClass');但是,所发生的情况是,原始项也会使用上面的代码高亮显示,而我只希望重复的项得到高亮显示。因此,在阿诺德,阿诺德和arnold,只有最后两个应该突出显示。同样也适用于其他被骗者。
如何更改代码以适应这种情况?还有更好的方法吗?
发布于 2014-01-31 17:29:48
试一试
var texts = {};
$('#lxx li').filter(function () {
var text = $.trim($(this).text().toLowerCase());
if (texts[text]) {
return true;
}
texts[text] = this;
return false;
}).addClass('someClass');演示:小提琴
发布于 2014-01-31 17:36:54
代码片段几乎是正确的。只需要使用prevAll,它只选择以前的元素,而不是siblings。
$('#lxx li').filter(function(){
return $(this).prevAll().text().toUpperCase()
.indexOf($(this).text().toUpperCase()) != -1;
}).addClass('someClass');小提琴
发布于 2014-01-31 17:30:20
为了让你发挥作用,我认为那片是一种选择。
$('#lxx li').filter(function(){
return $(this).siblings().text().toUpperCase().indexOf($(this).text().toUpperCase()) != -1;
}).slice(1).addClass('someClass');https://stackoverflow.com/questions/21486296
复制相似问题