2011-08-25 75 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