jQuery keydown 事件绑定 - 实时 vs keydown

Posted

技术标签:

【中文标题】jQuery keydown 事件绑定 - 实时 vs keydown【英文标题】:jQuery keydown event binding - live vs keydown 【发布时间】:2011-11-15 00:47:45 【问题描述】:

在 Mac 上的 Chrome、Safari 和 Opera 中,body live 和 document keydown 绑定都可以工作

$(document).ready(function() 
    $("body").append("Focus on this window and press any key");

    $("body").live("keydown", function(event) 
       $("body").append("<p>live on body</p>");            
    );

    $(document).keydown(function() 
       $("body").append("<p>keydown on document</p>");                 
    );
);

在 Firefox 中,只有文档 keydown 绑定有效。

为什么正文实时事件绑定在 Mac 上的 Firefox 中不起作用?

Mac 10.7.1 铬 13.0.782.220 野生动物园 5.1 歌剧 11.51 火狐 6.02

示例测试:http://jsfiddle.net/MikeGrace/qZVg8/3/

【问题讨论】:

现在 live 已被正式弃用 - 您是否仍然对答案感兴趣? (不是说我一个) 【参考方案1】:

我不能 100% 确定,但是绑定在身体上似乎毫无意义。因为 live 事件会绑定到 body,然后检查匹配的标签(在本例中为 body)是否触发了事件(keydown)。

live 函数已用于委托绑定主体内的元素。

在 Firefox 中,keydown 事件不会在正文上触发,而是在文档上触发。

$(document).bind("keydown", function(event) 
   $("body").append("<p>keydown on document</p>");            
);

【讨论】:

感谢您提供的信息,但它没有回答我的问题。 live 函数现已正式弃用 @MikeGrace 确实如此。第一个事件不会触发,因为您将它绑定到body,而它在document 上触发。您将第二个绑定到document,因此它在两种浏览器中都可以使用。

以上是关于jQuery keydown 事件绑定 - 实时 vs keydown的主要内容,如果未能解决你的问题,请参考以下文章

表单事件(jQuery)

如何为django中的按钮绑定事件

jQuery:绑定和取消绑定实时点击事件

jquery绑定事件on()方法

jquery 绑定回车(Enter )事件

用Jquery给Table 的TD TR绑定事件