2012-06-28 58 views
0

有一個很難在第2點擊弄清楚爲什麼此警報代碼被1日點擊調用一次,兩次,3日點擊四次,4日點擊等八次......爲什麼這個代碼每次點擊都會運行多次?

$(document).ready(function() { 
    $('#preventClickDiv a[href]').click(function(e){ 
     e.preventDefault(); 
     alert('Prevented'); 
     newClick(); 
    }); 
}); 
function newClick(){ 
    $('#preventClickDiv a[href]').click(function(e){ 
     e.preventDefault(); 
     alert('Prevented'); 
     newClick(); 
    }); 
} 
+1

什麼的'newClick()'的原因是什麼?只需完全刪除它。 – millimoose

回答

7

第一塊會創建一個點擊事件,調用newClick,這會創建一個自己調用的點擊事件......這會創建另一個事件...我想你會明白。取出函數中的點擊事件綁定代碼。

應該僅僅是這樣的:

function newClick(){ 
    alert("in new click"); 
} 
+0

無限!超越!! – Logard

+0

對不起,這是一個可怕的問題。我遇到了一個問題,我並沒有調用警報,而是運行了一些ajax,它返回了一組未響應點擊的新鏈接以防止默認值。我找到了jQuery的.live功能,這已經解決了我的問題。再次抱歉! –

+0

不用擔心。然而,'.live()'方法已被棄用(從1.7開始)。您應該使用['.delegate()'](http://api.jquery.com/delegate/)。 – sachleen

1

你要綁定一個click事件的單擊事件中,這樣,每一次點擊,你綁定另一個click事件,造成了大量的點擊每次點擊多次綁定到相同元素的事件。

0

你在做什麼是註冊一個額外點擊處理程序每​​次newClick()被調用,而不是取代舊的 - 它不會因爲事件被解僱而消失。只是這樣做:

$(document).ready(function() { 
    $('#preventClickDiv a[href]').click(function(e){ 
     e.preventDefault(); 
     alert('Prevented'); 
    }); 
}); 

(同樣,阻止用戶點擊鏈接是產生仇恨的好辦法。)

相關問題