2014-02-14 37 views
0

的問題是,我有一個頁面,60元,這是完全一樣的:JQuery的單擊事件觸發60次

<div class="imagetd">...</div> 
<div class="imagetd">...</div> 
.... 
<div class="imagetd">...</div> 
<div class="imagetd">...</div> 

併爲他們的事件:

$('.imagetd').each(function(){ 
    var that = this; 
    $(that).on('click', function(){ 
     console.log('clicked!'); 
    }) 
});   

我也嘗試過以下

$(document).on('click', '.imagetd', function(e){ 
    console.log('clicked!'); 
});  

當我點擊任何元素事件觸發60次。你能告訴我爲什麼嗎?以及如何解決它?

+0

爲什麼你有'.each'?你也可以直接使用'$(this)' –

+0

@ Mr.Alien,但這不是問題的關鍵嗎? –

+0

你可以提供一些關於你在哪裏有這個代碼的更多的上下文 –

回答

0

您不需要每個函數都可以將事件處理程序應用於多個項目。這應該工作:

$('.imagetd').on('click', function(e){ 
    console.log('clicked!'); 
}); 
+1

這是一樣的。內部jQuery仍然使用'each'方法。 – dfsq

0

如果你正在使用each,它運行基於元素的數量,如果你有60種元素它運行的時間。

$(function(){   
    $(document).on('click', '.imagetd', function(e){ 
     console.log('clicked!'); 
     }); 
}); 
0
$('.imagetd').on('click', function(e){ 
    e.preventDefault(); 
    console.log('clicked!'); 
    $(this).die('click'); 
}); 
0

這裏的fiddle,它工作正常,沒有

$.each 

您可以直接綁定到元素的集合,不需要使用每個,雖然它不是原因。