在关闭jquery ui对话框时卸载ajax

时间:2012-02-26 02:37:41

标签: jquery jquery-ui jquery-ui-dialog

我正在使用这种技术将ajax加载到jqueryui对话框中

load ajax dialog technique

一切正常

除了我的实施中的一个

我有一个计算,我把它放在“完整”部分......

options.complete = function(){
$("#quantity").bind("keyup",
                        function () {
                            var sum = 0;
                             price = $('#price').val();
                             qty =   $('#quantity').val();
                             sum = price*qty;

                            $('.total').text(sum);
 });        
}

每次第一次加载都能正常工作。如果我刷新它就像一个魅力。

我甚至尝试了实时方法。

像这样....

options.complete = function(){
 $("#quantity").live("keyup",
                        function () {
                            var sum = 0;
                             price = $('#price').val();
                             qty =   $('#quantity').val();
                             sum = price*qty;

                            $('.total').text(sum);
 });        
}

使用live方法如果我在函数顶部发出警报('here'),我会感到有些兴趣。

每次我打开和关闭对话框并更改数量中的数字我会获得与我打开和关闭对话框的次数一样多的警报

即:打开并关闭对话3次,我得到3个警报....打开它5次我得到5个警报等等。

我需要知道的是,是否有办法使用jquery ui对话框beforeClose:方法从DOM中完全卸载ajax。

提前致谢。

斯科特

oops forgot to put this in as well...

  "Cancel": function() {
            $(this).dialog("destroy");   
                            }   

也行不通。

2 个答案:

答案 0 :(得分:1)

如果您使用像live()这样的委托方法,请在其他事件处理程序之外调用它,以便在其他事件多次出现时不会重复绑定。 Live甚至不需要在$(document).ready()内部调用,因为它被委托给文档。

答案 1 :(得分:0)

关闭它后,你需要destroy()对话框。