假設我有這樣的識別重複的值與jQuery
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 1</li>
</ul>
列表使用jQuery我怎麼能確定何時值重複。 我的意圖是給重複值一個替代的風格。
假設我有這樣的識別重複的值與jQuery
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 1</li>
</ul>
列表使用jQuery我怎麼能確定何時值重複。 我的意圖是給重複值一個替代的風格。
您可以遍歷所有<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");
}
});
})();
$("ul li").each(function(){
var val = $(this).text();
$("ul li").not(this).each(function(){
if($(this).text() == val){
$(this).addClass("mystyle");
}
});
});
試試這個:
$('ul > li').each(function(){
var current = this;
$('ul').find('li:contains(' + $(this).html() + ')').each(function(){
if(current != this) {
$(this).css('color', 'red');
}
});
});
Demo上的jsfiddle
謝謝您的回答。還有一件事我需要調整。我只想「添加類」到dublicate的價值而不是原來的。目前該課程已添加到原版。 – jamjam 2012-04-04 15:06:58
@jamjam - 我更新了代碼和演示,不添加類到找到的第一個。 – jfriend00 2012-04-04 15:12:01
完美。謝謝。 – jamjam 2012-04-04 15:14:18