我有一个带有自定义按钮的jquery ui对话框,第一次发送数据很好,但是当我再次点击新打开的对话框时,它会发送两次,然后三次等等(没有页面重新加载)。如果我重新加载页面它工作正常,但为什么?这就是我的功能:
function openPopup() {
$('#box').dialog({
autoOpen: true,
modal : true,
title : 'my title',
width : 500,
open : function (event) {
var dialog = $(this);
$(".buttonclass").live('click', function(event) {
dialog.dialog('destroy');
alert('hello'); //This alerts hello once first time, twice second time, etc.
});
},
buttons : [
{
text: 'Cancel',
click: function() {
$(this).dialog("destroy");
}
}
]
});
}
我错过了什么?我一直在环顾四周,发现像点击解除绑定,对话框破坏之类的东西,但这些都没有工作(因为你可以看到我正在破坏我的对话框)。
答案 0 :(得分:0)
解决方案是在创建click事件之前使用unbind。这就是上面的打开部分应该是这样的:
open : function (event) {
var dialog = $(this);
$(".buttonclass").unbind('click').click(function(event) {
dialog.dialog('destroy');
alert('hello'); //This alerts hello once always now.
});
},
这样,没有多余的点击数据绑定到按钮,表单只发送一次。