Javascript 主干多事件处理程序问题:同一事件只调用一个方法
我有一个主干js应用程序,它有一个视图和许多子视图 我的代码如下所示:Javascript 主干多事件处理程序问题:同一事件只调用一个方法,javascript,jquery,events,backbone.js,Javascript,Jquery,Events,Backbone.js,我有一个主干js应用程序,它有一个视图和许多子视图 我的代码如下所示: var BooksView = Backbone.View.extend({ events: { "submit #book_form": "createBook" }, render: function() { var bookSocialView = new BookSocialView({ el: $('#the_books_social_div')
var BooksView = Backbone.View.extend({
events: {
"submit #book_form": "createBook"
},
render: function() {
var bookSocialView = new BookSocialView({
el: $('#the_books_social_div')
});
bookSocialView.render();
},
createBook: function(e){
e.preventDefault();
...
}
});
var BookSocialView = Backbone.View.extend({
events: {
"blur .socialInput": "getSocial",
"submit #book_form": "getSocial"
},
render: function () {
...
},
getSocial: function (e) {
...
}
});
我的bookSocialView看起来像:
var BooksView = Backbone.View.extend({
events: {
"submit #book_form": "createBook"
},
render: function() {
var bookSocialView = new BookSocialView({
el: $('#the_books_social_div')
});
bookSocialView.render();
},
createBook: function(e){
e.preventDefault();
...
}
});
var BookSocialView = Backbone.View.extend({
events: {
"blur .socialInput": "getSocial",
"submit #book_form": "getSocial"
},
render: function () {
...
},
getSocial: function (e) {
...
}
});
现在,我的blur.socialInput调用getSocial,但我的submit#book_表单没有。不过,控制台中没有任何错误。因为您在
BooksView
中已经有了submit
的事件处理程序,所以可能首先调用它。但是在处理程序内部调用e.preventDefault()
,它阻止提交事件到达BookSocialView.getSocial()
最好围绕图书表单提交逻辑重新思考您的策略。如果您想让多个处理程序工作,但又想防止表单sumbision,我建议使用。您的处理程序仍然可以执行
e.preventDefault()
,但还应该触发其他事件,如myModel.trigger('refreshSocial')
,谢谢您的回答。您知道是否有一种方法可以自动调用模糊,因此当表单提交时,它会自动失去焦点?要失去焦点,它需要移动到某个位置。只需找到其他需要关注的内容,然后调用$el.focus()
好的,谢谢。另一个问题:焦点结束时不会模糊触发器吗?为什么我可以在不触发表单元素模糊的情况下单击“提交”按钮?提交按钮通常位于表单内部。当焦点移到元素外部时,将调用模糊。当您单击submit时,表单中仍保留技术焦点。另一方面,我发现模糊事件在大多数情况下都是无用的,因为有更好的方法来实现相同的功能。是否有一个事件可以用来实现与模糊基本相同的功能,但当单击“提交”按钮时会失去焦点?