15

オプションのギャラリーと呼ばれるビューがあります。ギャラリーがレンダリングされるとき (ギャラリーが閉じるまで)、キーダウン イベントをリッスンして処理したいと考えています。

バックボーン イベントでこれを行うにはどうすればよいですか? '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要素にアタッチされたデリゲートとして定義されます。イベントのバインドを解除するには、who を内部でviewInstance.remove()呼び出し$(viewInstance.el).remove()、委任されたすべてのイベントをクリーンアップします。

また、一部のブラウザー (Firefox だと思います) では、一部のキー (矢印キーなど) がバブリングせず、委任されたkeypressイベントで適切に機能しないという既知の問題があることに注意してください。特殊キーをキャッチしている場合は、おそらくkeyupandを使用する方がよいでしょうkeydown

于 2011-09-16T18:06:51.977 に答える