Разница между .dialog( "close" ) и .dialog( "destroy" )
В чем разница между .dialog("close")
и .dialog("destroy")
в jquery-ui?
У меня есть script, где предыдущий разработчик использовал .dialog("destroy")
, но теперь я должен выполнить некоторые действия после закрытия диалога. Я нашел beforeclose
, который вызывается с .dialog("close")
, а не с .dialog("destroy")
. Поэтому я должен изменить метод от destroy
до close
, чтобы он работал.
Так есть что-нибудь, что я пропущу, если я использую .dialog("close")
, а не .dialog("destroy")
?
PS: В диалоговом окне используются пользовательские кнопки для закрытия, а .dialog("close")
вызывается при событии клика кнопки
Ответы
Ответ 1
close
оставляет диалог настроенным, но невидимым, поэтому вы можете снова открыть его с помощью .dialog('open')
.
destroy
полностью деконфигурирует диалоговое окно. Он удалит все элементы пользовательского интерфейса, которые были добавлены в DOM, и любые связанные обработчики событий.
destroy
не удалит элемент, содержащий содержимое диалогового окна (т.е. элемент, который вы вызываете .dialog
)
Ответ 2
Помните, что если вы используете диалоговое окно для ввода форм, это уничтожает его, а НЕ удаляет ваш вход, поэтому, если вы проверяете с помощью псевдо-селектора: элементы, которые вы уничтожили, будут проверены. Это где .remove() пригодится.
Вы можете добавить настраиваемое событие закрытия, которое разрушает ваше диалоговое окно и удаляет из него любую форму, чтобы предотвратить дальнейшую проверку его.
$dialog = $("#your_dialog_id");
$dialog.dialog('option', {
title: "title",
close: function (event, ui) {
$dialog.find("form").remove();
$dialog.dialog('destroy');
}
});
Ответ 3
От Документы:
уничтожить:
Полностью удаляет функциональность диалога. Это вернет элемент возвращается в исходное состояние.
близко:
Закрывает диалоговое окно, которое может повторно открываться при необходимости.