15

我有一个名为画廊的视图选项。我想在呈现画廊时收听并处理 keydown 事件(直到它关闭)。

我如何在骨干事件中做到这一点?我已经尝试了 'keydown X':function 的所有变体,但都没有奏效。

4

1 回答 1

23

我刚刚测试了以下内容,它完美无缺:

var view = Backbone.View.extend({
  // ... snip ...
  events: {
    'keyup :input': 'logKey'
    ,'keypress :input': 'logKey'
  }
  ,logKey: function(e) {
    console.log(e.type, e.keyCode);
  }
});

我会回去检查你的代码。Backbone 中的所有事件都定义为附加到viewInstance.el元素的委托。要取消绑定事件,请调用viewInstance.remove()which$(viewInstance.el).remove()在幕后调用并清理所有委托事件。

另请注意,在某些浏览器(我相信是 Firefox)中存在一个已知问题,即某些键(如箭头键)不会冒泡,并且无法与委派keypress事件一起正常工作。如果您要捕获特殊键,则最好使用keyupand keydown

于 2011-09-16T18:06:51.977 回答