メニューを切り替えるには、backbone.js
-viewの2つのイベントをバインドする必要があります。考えられるのは、idが#toggler
のボタンをクリックするとメニューが表示され、#menu
要素の外側にあるクリックがメニューを非表示にするということです。backbone.jsとjQueryを使用したイベントバインディングのクリック
残念ながら、私が#menu
要素をクリックしたかどうかにかかわらず、すべてのクリックでoutsideMenuHandler()
が呼び出されることなく、バックボーンのイベントバインディングでこれを行うことはできません。
この機能を変更するにはどうすればよいですか?
これは意図したとおりに動作しない、私はBACKBONE.JSでやっていることです:ちょうど参照として
myView = Backbone.View.extend({
events: {
'click #menu': 'insideMenuHandler',
'click': 'outsideMenuHandler'
}
insideMenuHandler: function(e) {}, // Called when clicking #menu
outsideMenuHandler: function(e) {} // Called on every click both on and off #menu
}
は、ここで私は一人ではjQueryを使用してどうなるのかです:
$(document).click(function(event) {
if ($(event.target).closest('#menu').get(0) == null) {
$("#menu").slideUp();
}
});
おかげであなたの答えのためにたくさん。とても感謝している!簡単な質問 - 私が理解するように、clickイベントをfalseに戻すと、デフォルトのイベントは発生しません。つまり、outsideMenuHandlerがfalseを返すので、他のすべてのクリックは無効になります。私のロジックを実行した後に(私のメニューを隠して) 'outsideMenuHandler'が' true'を返すようにすれば、私は困っていますか? – Industrial
@Industrial: 'body、html'バインディングから' outsideMenuHandler'への二重の呼び出しで終わりますが、それは問題ではないかもしれません。おそらく 'outsideMenuHandler'を' html'にバインドするだけで済むかもしれませんが、あなたが気にしているすべてのブラウザで正しく動作することをブラウザがチェックしたいと思うでしょう。 –