I need to bind two events in my backbone.js
-view in order to toggle a menu. The idea is that if a button with the id #toggler
is clicked the menu appears and any click outside the #menu
element will hide the menu.
Unfortunately I cannot get this working with backbone's event binding without having the outsideMenuHandler()
called on every click regardless if I clicked on the #menu
element, or not.
What should I change to make this work?
This is what I have done in backbone.js, which doesn't work as intended:
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
}
Just as a reference, here's what I would do using jQuery alone:
$(document).click(function(event) {
if ( $(event.target).closest('#menu').get(0) == null ) {
$("#menu").slideUp();
}
});