2014-09-21 67 views
1

這是我在SO的第一個問題。基本上,頁面上有大量元素,我想計算並顯示用戶單擊每個元素的次數。但爲此,我需要爲每個元素定義變量。 沒有更簡單的方法嗎?jQuery:計算數百個元素的點擊次數

對於一個元素:

var counter = 0; 
$('.container').on("click", function(){ 
counter = counter+1; 
$(this).find('.tag').html(counter); 
}); 
+0

您是否嘗試過使用類來對這些元素進行分組? – wei2912 2014-09-21 13:10:12

+0

@ wei2912請詳細說明。 – 2014-09-21 13:10:55

+0

最簡單的方法是直接在元素上放置一個數字屬性來保存它的數量。只要確保名稱避免衝突,如:'this .__ counter__ = this .__ counter__ + 1 || 1;' – 2014-09-21 13:14:13

回答

4

您可以存儲data與每個元素計數次,每次被點擊數。

$(function(){ 
 
\t $('.container').click(function(){ 
 
     if ($(this).data('count')) { // already been clicked 
 
      $(this).data('count', $(this).data('count') + 1); // add one 
 
     } else { // first click 
 
      $(this).data('count', 1); // initialize the count 
 
     } 
 
     $(this).html($(this).data('count')); // show it 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<div class="container">container</div> 
 
<div class="container">container</div> 
 
<div class="container">container</div> 
 
<div class="container">container</div> 
 
<div class="container">container</div> 
 
<div class="container">container</div>

+0

對不起。但我似乎無法讓它工作。你能幫助創建一個小提琴嗎? – 2014-09-21 13:35:28

+0

我添加了一個Stack Snippet,您可以從答案中正確運行。 – Scimonster 2014-09-21 13:39:00

+0

謝謝!有用。 – 2014-09-21 13:42:08

0

嘗試設置類所有要算的元素。

var counter = 0; 
$('.someClass').on("click", function(){ 
    counter++; 
    $(this).find('.tag').html(counter); 
}); 
+0

每個元素都有不同的預先計算的類。 – 2014-09-21 13:14:26