0

我有一个带有自定义按钮的 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");
                 }
             }
         ]
     });
    }

我错过了什么?我一直在环顾四周,发现诸如单击解除绑定、对话框破坏之类的东西,但这些都不起作用(如您所见,我正在破坏我的对话框)。

4

1 回答 1

0

解决方案是在创建点击事件之前使用 unbind。上面的开放部分应该是这样的:

open : function (event) {
      var dialog = $(this); 
      $(".buttonclass").unbind('click').click(function(event) {
           dialog.dialog('destroy');
           alert('hello'); //This alerts hello once always now.
      });
},

这样,没有额外的点击绑定到按钮,并且表单只发送一次。

于 2013-08-06T15:21:38.330 回答