【问题标题】:jQuery keydown event binding - live vs keydownjQuery keydown 事件绑定 - 实时 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 已被正式弃用 - 您是否仍然对答案感兴趣? (不是说我一个)

标签: jquery cross-browser key-bindings jquery-events


【解决方案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,因此它在两种浏览器中都可以使用。
猜你喜欢
  • 2012-09-24
  • 1970-01-01
  • 2015-04-06
  • 2014-10-18
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多