2013-05-22 81 views
2

在我的每個函數中,我從一個div中提取文本,將它作爲一個類添加到父元素,然後我需要計算有多少個元素具有該類。問題出現了,因爲它在我的每個函數中,因爲它是遞增計數的,而不是隻給我總金額。如何計算每個函數內的元素總數?

你可以在我的小提琴看到輸出爲1231211和我想要得到的是3211

My Fiddle

我的HTML

<div class="parent"> 
    <div class="nid">asdf</div> 
</div> 

<div class="parent"> 
    <div class="nid">asdf</div> 
</div> 

<div class="parent"> 
    <div class="nid">asdf</div> 
</div> 

<div class="parent"> 
    <div class="nid">qwerty</div> 
</div> 

<div class="parent"> 
    <div class="nid">qwerty</div> 
</div> 

<div class="parent"> 
    <div class="nid">zxcv</div> 
</div> 

<div class="parent"> 
    <div class="nid">ghjk</div> 
</div> 

<div class="numbers"> 

</div> 

我的jQuery

$(".nid").each(function() { 
    var nid = $(this).text(); 
    $(this).parent().addClass(nid); 
    var nidCount = $(".parent."+nid).length; 
    $('.numbers').append(nidCount); 
}); 
+0

所以,你只需要計算唯一值還是什麼?你試圖解決什麼是最初的任務? – zerkms

+0

是的,我需要計算唯一的值。所以三個父元素將具有asdf的類。我需要計算並返回總數3,而不是遞增計數,如果您只需要計數,則爲123. – NickB

+0

爲什麼要將其設置爲父類?什麼是原始任務? – zerkms

回答

1

嘗試

var counter = {}; 
$(".nid").each(function() { 
    var text = $(this).text(); 
    var count = counter[text] || 0; 
    counter[text] = count + 1; 
}); 
$.each(counter, function(key, value){ 
    $('.numbers').append(value); 
}) 

演示:Fiddle

+0

這似乎工作!非常感謝 :) – NickB

-1

嘗試在兩個類之間放置逗號。

var nidCount = $(".parent,."+nid).length; 
+0

這似乎計算任何元素與家長作爲一個類。它正在返回7777777. – NickB

1

在循環內部,計數每次都在發生。所以,第一個,第一個,第二個,第二個,第二個等所有asdf,你可以在循環中以某種方式存儲計數,可能還有一個對象。然後,在循環之後,打印出計數。

您也可以聚合nids,將這些類添加到父級,然後在循環聚合nid的第二個循環中,您可以計算有多少父母擁有該特定類。

+0

這聽起來不錯,但我肯定在如何執行這一點的損失。我會研究它。 – NickB

0

您的腳本在每次計入DIV時附加nidCount.numbers。你應該做的是這樣的:

var numbers = {}; 
$(".nid").each(function() { 
    var nid = $(this).text(); 
    $(this).parent().addClass(nid); 
    var nidCount = $(".parent."+nid).length; 
    numbers[nid] = nidCount; 
}); 

for (var key in numbers) { 
    $('.numbers').append(numbers[key]); 
} 
+1

1.'數字'應該是一個不是數組的對象2.你錯過了''關鍵'var'' – zerkms

+0

@zerkms更正後,謝謝! (沒有這些變化,它對我來說工作得很好,可能我的瀏覽器慷慨地解釋了這些東西......) –

+0

這也適用。非常感謝幫助:) – NickB