仅将一个或按钮事件委托给Backbone

时间:2011-10-31 08:11:37

标签: javascript events backbone.js

我有html内容,如:

<button class="submit">Save</button>

并查看如下:

var MyView = Backbone.View.extend({
 events: {
    'click .submit': 'save'
 },

 save: function() {}
}

当我点击此按钮时,我发现主干不会处理此事件,而是进行标准浏览器操作(至少在Chrome上)。 <a>标记也是如此。我的意思是Backbone没有绑定这个标签。

目前我要使用<span>按钮,它工作正常,但我想知道为什么我不能使用按钮的标准标签?我如何删除标准浏览器事件,并使用<a><button>

的主干

1 个答案:

答案 0 :(得分:5)

事件只是'听众' - 他们被告知事件发生了。如果你想要停止活动,你必须

save: function(event) {
   event.preventDefault();
   event.stopPropagation();
}

要检查Backbone是否处理该事件,请在单击时检查是否调用了侦听器(save)。 Backbone不会停止默认行为,您必须自己在事件处理函数中执行此操作。

另一个建议:将您的按钮放在form内,并为submit form添加一个事件监听器。如果用户使用键盘提交表单(单击事件仅适用于鼠标),这也将起作用。