2014-01-30 69 views
0

我有一個來自數據庫名稱的大名單,我想過濾並給出一個特定的名稱值的計數 - 在這種情況下,'匿名'。jQuery組元素名稱與計數

例如:

<ul> 
    <li>Johnny Ace</li> 
    <li>Mary Adams</li> 
    <li>Bob Allen</li> 
    <li>Anonymous</li> 
    <li>Anonymous</li> 
    <li>Anonymous</li> 
    <li>Anonymous</li> 
    <li>Anonymous</li> 
    <li>David Brown</li> 
    <li>Sue Smith</li> 
    <li>John Williams</li> 
</ul> 

我想要得到的結果是:

<ul> 
    <li>Johnny Ace</li> 
    <li>Mary Adams</li> 
    <li>Bob Allen</li> 
    <li>Anonymous (5)</li> 
    <li>David Brown</li> 
    <li>Sue Smith</li> 
    <li>John Williams</li> 
</ul> 

什麼是做到這一點的最好方法是什麼?

+1

這個S爲了明顯的效率原因,通常應該在服務器端完成。 –

+1

嘗試http://jsfiddle.net/arunpjohny/ALM2k/1/ –

回答

1

像這樣使用:contains()得到的長度,並刪除所有,但第一位的,然後將文本

var count=$('ul li:contains("Anonymous")').length; 
$('ul li:contains("Anonymous")').not(':first').remove().end().text("Anonymous("+count+")"); 

DEMO

+0

這工作很好。謝謝! – joshuaiz

0

循環可能是容易的爲好,適用於所有的元素:

http://jsfiddle.net/N6wSf/16/

var categories = {}, 
    category; 
$('ul li').each(function(i, el){ 
    category = $(el).text(); 
    if (categories.hasOwnProperty(category)) { 
     categories[category] += 1; 
    } else { 
     categories[category] = 1; 
    } 
}); 

$('ul').empty(); 
// print results 
for(var key in categories){ 
    $('ul').append('<li>' + key + ' (' + categories[key] + ')</li>'); 
}