2011-08-25 77 views
1

我有按鍵登記的事件兩次的問題。我目前使用.live,因爲HTML元素是動態加載和頻繁更改的。.live()按鍵註冊兩次

我曾嘗試使用的keydown以及按鍵,但結果卻是沒有什麼不同。任何人都可以發現是什麼導致他們註冊兩次?

的JavaScript:

$(".class3").live('keypress', function (e) { 
    if (e.keyCode == 13){ 
     alert("Enter key pressed"); 
    } 
}); 

的HTML:

<dd class="class1 class2"> 
    <input type="text" class="class2 class3" placeholder="Type Name Here"> 
</dd> 
+0

相同的代碼似乎已經註冊一次在這裏,你缺少什麼都提? – Usman

回答

2

你還沒有在這裏正確粘貼代碼。你所要做的是這樣的:

$(".class2").live('keypress', function (e) { 
    if (e.keyCode == 13){ 
     alert("Enter key pressed"); 
    } 
}); 

http://jsfiddle.net/pnNAM/

出現這種情況的原因,是因爲你的keypress事件冒泡。因此,對於input觸發一次,然後再次爲dd

如果你確實只能聽keypress$(".class3"),它只會觸發一次。

+0

爲什麼downvote?這是一個合理的假設。 – HyderA

+0

OP的代碼[的jsfiddle]工作正常(http://jsfiddle.net/pnNAM/2/)/鉻13 – HyderA

+0

哇,令人驚訝,實際上是對的!簡直不敢相信我沒注意到。謝謝。 – tgrosinger