.live()按键注册两次

时间:2011-08-25 21:27:47

标签: jquery

我遇到按键注册事件两次的问题。我目前正在使用.live,因为HTML元素是动态加载和频繁更改的。

我确实尝试过使用keydown和keypress,但结果并没有什么不同。有人能够发现导致他们两次注册的原因吗?

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>

1 个答案:

答案 0 :(得分:2)

您尚未正确粘贴代码。你要做的是:

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

http://jsfiddle.net/pnNAM/

发生这种情况的原因是因为您的keypress事件正在冒泡。因此,它会针对input触发一次,然后针对dd触发。

如果您确实只在keypress上收听$(".class3"),那么它只会触发一次。