jQuery对话框-对话框中定义的数组在关闭时不会被删除

jQuery Dialog - Array defined in dialog is not removed on close

本文关键字:对话框 删除 定义 数组 jQuery      更新时间:2023-09-26

我在jQuery对话框中遇到了一个典型的问题。

我基本上是在做一些javascript操作,然后在对话框中更新一个简单的JS数组。"进程"按钮将把数组值传递给服务器。如果我在对话框上单击"关闭",对话框就会被简单地删除。

然而,在重新创建对话框时,上一个会话的数组仍然存在,即它仍然有一定的大小。它不会随对话框一起删除。

我什么都试过了。例如:在父页面中:

close: function() 
{
$("#dialog").remove();                      
array.length=0;
array=[];
}

或者在脚本初始化期间的对话框中:

$(document).ready(function() {
var array = new array();
array.length=0;
}

甚至当我点击对话框关闭按钮时触发一个呼叫:

$(".ui-dialog-titlebar-close").click(function(){
*remove array*
});

什么都没有。零Zippo。阵列保留。正如你可能已经猜到的,这对我的服务器更新造成了严重破坏,我不确定问题可能是什么

如果你们中的任何人有解决方案,我将不胜感激。

非常感谢。

试试这个吧,它对我有效

<script type="text/javascript">
    var array = new Array();
    $(function () {
        $("#dialog").dialog({
            autoOpen: false,
            buttons: {
                "Cancel": function () { $(this).dialog("close"); },
                "Ok": function () { $(this).dialog("close"); }
            },
            close: function () { alert(array); array = new Array(); },
            open: function () { alert(array); }
        });
        $("#showDialog").click(function () {
            $("#dialog").dialog("open");
        });
        $("#updateArray").click(function () {
            array = [1, 2, 3, 4, 5]
        });
    });
</script>

Html:

<input type="button" id="showDialog" value="Show Dialog" />
<div id="dialog">
    Aliquam elementum ut? Tincidunt mattis in, ac ut, a cursus integer, habitasse? Elementum
    proin? Sit amet et elementum pulvinar integer, non, tortor dis in. Pulvinar dictumst!
    Turpis. Ultricies augue habitasse? Hac nunc integer risus enim ac? Ut nisi nisi
    magna velit elementum diam auctor purus et amet a!
    <br />
    <input type="button" id="updateArray" value="Update Array" />
</div>

当我尝试它时,它是有效的。

这是我的片段:

  window.onload = function () {
     var array = ['foo', 'bar'];
     console.log(array);
     array = [];
     console.log(array);
  }

第一个输出包含元素。第二输出为空。也许问题是,你必须说array=new array(),而不是"new array()"。但使用文字[]对我来说确实有效。