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的主要内容,如果未能解决你的问题,请参考以下文章