Bir menüyü değiştirmek için backbone.js
-view'de iki olayı bağlamalıyım. Buradaki fikir şudur: #toggler
kimliğine sahip bir düğme tıklandığında menü appers ve #menu
öğesinin dışındaki herhangi bir tıklama menüyü gizleyecektir.Backbone.js ve jQuery ile olay bağlama tıklamaları
Maalesef, #menu
öğesinin üzerine tıklattıysam da, her tıklamada outsideMenuHandler()
çağrılmadan omurganın olay ciltlemesi ile çalışamıyorum.
Bu işi yapmak için neleri değiştirmeliyim?
: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
}
Sadece bir referans olarak, burada ben yalnız jQuery kullanarak böyle yapardı:
Bu
ben istendiği gibi çalışmıyor, hangi backbone.js yapmış budur$(document).click(function(event) {
if ($(event.target).closest('#menu').get(0) == null) {
$("#menu").slideUp();
}
});
teşekkürler cevap için çok. Çok takdir! Hızlı bir soru - anladığım kadarıyla, bir tıklama etkinliğinin "false" i geri dönmesine izin verilmesi, "varsayılan etkinliğin" oluşmasını engelleyecektir. Diğer bir deyişle, "externalMenuHandler", "false" değerini döndürdüğü için tüm diğer tıklamalar devre dışı bırakılacaktır. Mantığımı gerçekleştirdikten sonra (menümü gizledikten sonra) 'externalMenuHandler' 'true'ma geri dönmeme izin verirseniz kendimi belaya sokarım mı? – Industrial
@Industrial: 'bodyMenuHandler' öğesine 'body, html' bağlamasından çifte arama ile sonuçlanacaksınız, ancak bu bir sorun olmayabilir. Muhtemelen 'externalMenuHandler' sözcüğünü 'html' ile bağlayabiliyordunuz, ancak tarayıcıya bakmak istediğiniz tüm tarayıcılarda doğru şekilde çalıştığından emin olmak için kontrol etmek isteyebilirsiniz. –