假设我有一个像这样的列表
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 1</li>
</ul>
使用jQuery如何识别值重复的时间。 我的目的是为重复值提供另一种风格。
答案 0 :(得分:2)
您可以遍历所有<li>
个对象,获取其文本并将其收集到您用作索引的对象中(以提高效率)。完成后,查看哪些项目具有多个具有任何给定文本的元素,并为其添加特殊类。此解决方案使用对象来构建索引以提高效率。代码的工作原理如下:
HTML:
<ul id="list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 1</li>
</ul>
带注释的Javascript:
(function() {
var index = {};
$("#list li").each(function() {
var text = $(this).text();
// if this text not in the index yet, create an array for it
if (!(text in index)) {
index[text] = [];
}
// add this item to the array
index[text].push(this);
});
// cycle through the index and find each item that has more than one DOM element
$.each(index, function() {
// "this" will be an array of DOM nodes
if (this.length > 1) {
$(this.slice(1)).addClass("duplicates");
}
});
})();
答案 1 :(得分:0)
$("ul li").each(function(){
var val = $(this).text();
$("ul li").not(this).each(function(){
if($(this).text() == val){
$(this).addClass("mystyle");
}
});
});
答案 2 :(得分:0)
试试这个:
$('ul > li').each(function(){
var current = this;
$('ul').find('li:contains(' + $(this).html() + ')').each(function(){
if(current != this) {
$(this).css('color', 'red');
}
});
});
jsFiddle上的