每次创建视图并打开对话框时,我都会收到n
一组事件,其中n
对话框打开的次数是多少。在下面的示例中,每次单击fooButton
我都会收到n
按钮单击事件。我知道我应该取消绑定事件但this.undelegateEvents()
没有工作。
根据我对 SimpleDialog (和其他对话框小部件的工作方式)的理解,创建对话框时 div 的内容被复制到另一个元素中,这表明我应该能够捕获创建的元素(比如$dialog = this.$el.modal();
)然后调用取消委托事件。这种方法也行不通。
有任何想法吗?
MyDialogView = Backbone.View.extend({
initialize: function(options){
this.render();
},
render: function() {
this.$el.empty().append("<button id='fooButton'>Foo</button>");
this.$el.modal({ "static": true });
},
events: {
"click #fooButton": "fooPressed"
},
fooPressed: function() {
alert("clicked");
$.modal.close();
}
});
$(function(){
$("#openDialog").click(function() {
new MyDialogView({el: $("#dialog") });
});
});
感谢您的帮助!
通过切换到 JQuery UI Dialog 解决。请看下面我的回答。