首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只使用类标记某些列表项

只使用类标记某些列表项
EN

Stack Overflow用户
提问于 2014-01-31 17:26:48
回答 3查看 42关注 0票数 0

我有下面的列表项目

代码语言:javascript
复制
<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”添加到所有重复多次的项中。

代码语言:javascript
复制
$('#lxx li').filter(function(){
    return $(this).siblings().text().toUpperCase()
        .indexOf($(this).text().toUpperCase()) != -1;
  }).addClass('someClass');

但是,所发生的情况是,原始项也会使用上面的代码高亮显示,而我只希望重复的项得到高亮显示。因此,在阿诺德,阿诺德和arnold,只有最后两个应该突出显示。同样也适用于其他被骗者。

如何更改代码以适应这种情况?还有更好的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-31 17:29:48

试一试

代码语言:javascript
复制
var texts = {};
$('#lxx li').filter(function () {
    var text = $.trim($(this).text().toLowerCase());
    if (texts[text]) {
        return true;
    }
    texts[text] = this;
    return false;
}).addClass('someClass');

演示:小提琴

票数 4
EN

Stack Overflow用户

发布于 2014-01-31 17:36:54

代码片段几乎是正确的。只需要使用prevAll,它只选择以前的元素,而不是siblings

代码语言:javascript
复制
$('#lxx li').filter(function(){
    return $(this).prevAll().text().toUpperCase()
                  .indexOf($(this).text().toUpperCase()) != -1;
}).addClass('someClass');

小提琴

票数 3
EN

Stack Overflow用户

发布于 2014-01-31 17:30:20

为了让你发挥作用,我认为那片是一种选择。

代码语言:javascript
复制
$('#lxx li').filter(function(){
    return $(this).siblings().text().toUpperCase().indexOf($(this).text().toUpperCase()) != -1;
  }).slice(1).addClass('someClass');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21486296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档