Backbone.js 主干事件被多次调用
我的脚刚被脊梁弄湿,我想我有一个很容易解决的问题。我有以下视图,这是一个简单的选项卡,当单击时打开一个面板,当关闭时返回到一个选项卡:Backbone.js 主干事件被多次调用,backbone.js,Backbone.js,我的脚刚被脊梁弄湿,我想我有一个很容易解决的问题。我有以下视图,这是一个简单的选项卡,当单击时打开一个面板,当关闭时返回到一个选项卡: myApp.views.Support = { Form: Backbone.View.extend({ initialize: function () { this.el = $('#support'); this._ensureElement(); },
myApp.views.Support = {
Form: Backbone.View.extend({
initialize: function () {
this.el = $('#support');
this._ensureElement();
},
render: function () {
if (this.$el.hasClass('support-panel')) {
// close panel
this.$el.empty();
this.$el.removeClass('support-panel');
this.$el.addClass('support-button');
}
else {
// open and populate panel
var template = _.template(myApp.utils.RenderTemplate('support/default'), {});
this.$el.removeClass('support-button');
this.$el.addClass('support-panel');
this.$el.html(template);
}
return this;
},
closePanel: function () {
alert('close event fired');
},
events: {
'click #SubmitFormButton': 'submitForm',
'click #CloseSupportPanel': 'closePanel'
},
submitForm: function (event) {
alert('form submitted: ' + $('#message'));
}
})
}
一切正常,除了“closePanel”在每次单击事件发生时被触发+2次。我想这是我错过的某种清理,但我不知道是什么。可能是因为事件正在冒泡。尝试返回
false
可能是因为事件正在冒泡。尝试返回false
我知道这是一个老问题,但它帮助我意识到我的问题是什么。正如Daniel所说,返回false是可行的,但问题的根本原因是标记中有两次jQuery选择器,导致创建了两个jQuery对象,因此单击事件触发两次 我知道这是一个老问题,但它帮助我认识到我的问题是什么。正如Daniel所说,返回false是可行的,但问题的根本原因是标记中有两次jQuery选择器,导致创建了两个jQuery对象,因此单击事件触发两次 这很有效,但似乎不是最好的方法。我完全承认,我完全没有任何依据支持这种说法,也许这是处理这种情况的正确方法。你认为呢?这是正确的方法。这正是javascript的工作方式。这很有效,但似乎不是最好的方式。我完全承认,我完全没有任何依据支持这种说法,也许这是处理这种情况的正确方法。你认为呢?这是正确的方法。这就是javascript的工作方式。