Диалог jQuery - Массив, определенный в диалоге, не удаляется при закрытии - PullRequest
0 голосов
/ 03 июня 2011

У меня типичная проблема с диалоговым окном 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 голосов
/ 03 июня 2011

Попробуйте, это работает у меня

<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>
0 голосов
/ 03 июня 2011

Когда я пытаюсь, это работает.

вот мой фрагмент:

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

     console.log(array);

     array = [];

     console.log(array);
  }

первый вывод содержит элементы. второй вывод пуст. возможно проблема в том, что вы должны сказать массив = новый массив () вместо «новый массив ()». но использование литералов [] определенно работает для меня.

...