2011-10-19 53 views
1

我有這樣的jQuery代碼:爲什麼我的警報不止一次顯示?

$("div.note a").live("click", function(e) { 
    e.preventDefault(); 
    alert('test'); 
}); 
<div id="note_list"> 

<div class="note"> 
Text 1 
<a href="">X</a> 
</div> 

<div class="note"> 
Text 2 
<a href="">X</a> 
</div> 

<div class="note"> 
Text 3 
<a href="">X</a> 
</div> 

</div> 

有人能告訴我,爲什麼警報顯示的3倍?它在Chrome中運行良好,但不在Firefox中運行。

+3

它僅出現一次對我來說:http://jsfiddle.net/ s2ZAz /' - >'如果出現問題,它就在代碼中的其他地方。也許你是動態地添加元素並且每次綁定事件處理程序?然後你不明白'live'在做什麼:http://api.jquery.com/live/ –

+0

可能是你分配實時事件多次times.try在分配之前解除綁定點擊事件。 – sathis

+0

@sathis,是的,我使用live,因爲cose被加載了.html(html_code)。爲什麼.live()不好?我的意思是......我必須解除事件並再次使用直播活動? – Dail

回答

2

這就是所謂的一次性,你的情況,你可以通過e.stopImmediatePropagation();

$("div.note a").live("click", function(e) { 
    e.stopImmediatePropagation(); 
    e.preventDefault(); 
    alert('test'); 
    }); 
1

停止多個事件調用試試這個

$("div.note a").die('click').live("click", function(e) { 
    e.preventDefault(); 
    alert('test'); 
}); 
+0

你不能以這種方式解除與'live'綁定的事件處理程序(如果這是你的意圖)。你必須使用'die'。 –

+0

correct.thanks。 :) – sathis

+0

@sathis,你能解釋一下wky我必須解除綁定然後綁定嗎? – Dail