我需要绑定我的backbone.js
-view中的两个事件来切换菜单。这个想法是,如果点击一个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();
}
});
非常感谢您的回答。非常感激!一个简单的问题 - 据我所知,让一个点击事件返回false将防止任何“默认事件”发生,这意味着所有其他点击将被禁用,因为'outsideMenuHandler'返回'false'。如果在执行我的逻辑(隐藏我的菜单)后让我的'outsideMenuHandler'返回'true',我是否会陷入麻烦? – Industrial 2012-01-31 10:59:38
@Industrial:您最终会从'body,html'绑定中调用'outsideMenuHandler',但这可能不成问题。你可能只能绑定'outsideMenuHandler'到'html',但你想浏览器检查一下,确保它在你关心的所有浏览器中正确运行。 – 2012-01-31 19:01:25