vik*_*iky 4 focus focusin dom-events backbone.js
我使用Backbone.js的代码视图部分是这样的:
var myView = Backbone.View.extend({
events: {
'focus .cell input' : "updateCurrentCell"
},
updateCurrentCell: function(event) {
console.log('updateCurrentCell called');
// Update the current cell.
}
}
Run Code Online (Sandbox Code Playgroud)
只要input元素获得焦点,就会调用该函数两次.我尝试使用打印堆栈跟踪console.trace().它显示一旦函数调用源自焦点事件而下一次从焦点开始.
我试图找出如何防止其中一个事件被解雇导致我无处可去.我怎样才能解决这个问题?
Backbone.View使用delegateEvents绑定事件对象中列出的事件.如果您查看源代码,您将看到delegateEvents使用jQuery.delegate执行此操作.
jquery文档中有一个关于.focus()的注释,它可能是相关的:
焦点事件不会在Internet Explorer中冒泡.因此,依赖于焦点事件的事件委派的脚本将无法跨浏览器一致地工作.但是,从版本1.4.2开始,jQuery 通过将焦点映射到 其事件委托方法.live()和.delegate()中的focusin事件来解决此限制.
从理论上讲,这应该可以正常工作,但既然你得到了两者,也许你可以尝试只是监听.focusin()事件,因为它支持事件冒泡.delegate()监听并且是什么jQuery无论如何都试图将"焦点"映射到.
| 归档时间: |
|
| 查看次数: |
10372 次 |
| 最近记录: |