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

时间:2011-06-03 11:37:48

标签: javascript jquery jquery-ui-dialog

我遇到了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的。阵列仍然存在。您可能已经猜到了,这对我的服务器更新造成了严重破坏,我不确定问题是什么。

如果你们中的任何人都有解决方案,我会非常感激。

非常感谢。

2 个答案:

答案 0 :(得分:0)

当我尝试它时,它可以工作。

这是我的片段:

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

     console.log(array);

     array = [];

     console.log(array);
  }

第一个输出包含元素。第二个输出是空的。 也许问题是,你必须说array = new Array()而不是“new array()”。 但使用文字[]肯定对我有用。

答案 1 :(得分:0)

试试这个为我工作

<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>