2012-03-07 27 views
1

我有以下的表從數據庫中通過循環輸出值和看起來是這樣的:值的副本輸出到表

<table class="myData"> 
<tr> 
    <td class="lbl"> 
    Item 1: 
    </td> 
    <td> 
    Amateur Team 
    </td> 

</tr> 

<tr> 
    <td class="lbl"> 
    Item 2: 
    </td> 
    <td> 
    New School 
    </td> 
</tr> 
... 
<tr> 
    <td class="lbl"> 
    Item 53: 
    </td> 
    <td> 
    New School 
    </td> 
</tr> 
</table> 

我想使用jQuery在第二列中突出重複值,也許是通過改變顏色。可以這樣做嗎?

if (duplicate(s)) { 
    $(".myData td:nth-child("2").css("color","red"); 
} 

回答

3

你可以這樣做。請參閱本answer一個解釋上seen

var seen = {}; 
$('.myData td:nth-child(2)').each(function() { 
    var txt = $(this).text(); 
    if (seen[txt]) 
     $(this).css('color','red'); 
    else 
     seen[txt] = true; 
}); 

對不起,我剛剛意識到這不會突出第一次出現。如果其他人還沒有回答,我將在今晚晚些時候回到家後修復它。

+0

非常優雅的解決方案@Prowla!我的實現和@icyrockcom一樣,但是當我看到你的時候我就放棄了! – bPratik 2012-03-07 04:39:49

+0

其實這對我很好。我只標記刪除重複項。謝謝! – santa 2012-03-07 17:17:04

1

你可以做這樣的事情:

調整地圖的副本計數的

var vals = {}; 
$(".myData td:nth-child(2)").each(function(i, e) { 
    var txt = $(e).text(); 
    var val = vals[txt]; 
    vals[txt] = val == null ? 1 : val + 1; 
}) 

馬克複製

$(".myData td:nth-child(2)").each(function(i, e) { 
    var txt = $(e).text(); 
    if(vals[txt] > 1) { 
     $(e).css("color","red"); 
    } 
})  

活生生的例子: