gpt4 book ai didi

focus - Backbone.js 焦点事件触发两个事件 focus 和 focusin

转载 作者:行者123 更新时间:2023-12-03 23:09:13 26 4
gpt4 key购买 nike

我使用 Backbone.js 的代码的 View 部分是这样的:

var myView = Backbone.View.extend({

events: {
'focus .cell input' : "updateCurrentCell"
},
updateCurrentCell: function(event) {
console.log('updateCurrentCell called');
// Update the current cell.
}
}

每当输入元素获得焦点时,都会调用该函数两次。我尝试使用 console.trace() 打印堆栈跟踪.它表明一旦函数调用源自 关注 下一次从 开始的事件关注 .

我试图找出如何防止其中一个事件被解雇,但结果却一无所获。
我怎样才能解决这个问题?

最佳答案

Backbone.View 使用 delegateEvents绑定(bind)事件对象中列出的事件。如果你看看 source ,你会看到 delegateEvents使用 jQuery.delegate这样做。

在 jquery 文档中有一条注释 .focus()这可能是相关的:

The focus event does not bubble in Internet Explorer. Therefore, scripts that rely on event delegation with the focus event will not work consistently across browsers. As of version 1.4.2, however, jQuery works around this limitation by mapping focus to the focusin event in its event delegation methods, .live() and .delegate().



从理论上讲,这应该可以正常工作,但既然你得到了两者,也许你可以试着只听 .focusin()事件,因为它支持事件冒泡的类型 .delegate()无论如何,jQuery 都在尝试将“焦点”映射到该对象。

关于focus - Backbone.js 焦点事件触发两个事件 focus 和 focusin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7007801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com