Недавно я столкнулся с ситуацией, когда меня немного смутило, какую технику мне следует использовать при работе с модальным диалогом JQueryUI.
У меня есть функция: ClearDay (weekID, ltDayID) . В настоящее время это ответственно за создание диалога с двумя кнопками: ок и отмена.
ok сработает вызов ajax, передавая weekID и ltDayID на сервер.
cancel очистит диалог div и вызовет .dialog('destroy')
на целевом div.
У меня вопрос: какой следующий подход я должен использовать?
Уничтожить / заново создать диалог при каждом вызове, чтобы я мог передавать параметры в вызов ajax и иметь только один div для всех диалогов в разметке
function ClearDay(weekID, ltDayID) {
$('#modalDialog').dialog({
autoOpen: true,
width: 300,
title: 'Confirm Delete',
modal: true,
buttons: [{
text: 'ok',
click: function (e) {
$(this).dialog('close');
$.ajax({
url: '/Shift/ClearDay',
type: 'POST',
cache: false,
data: { shiftWeekID: weekID, shiftLtDayID: ltDayID },
success: function (result) {
LoadShiftPattern(function (result) {
$('#weekContainer').html(result);
SelectLastUsedField();
});
}
});
}
},
{
text: 'cancel',
click: function (e) {
$('#errorList').empty();
$(this).dialog('close');
}
}],
open: function (e) {
$(this).html("Clicking ok will cause this day to be deleted.");
},
close: function (e) {
$(this).empty();
$(this).dialog('destroy');
}
});
}
Создайте диалог только один раз, но с одним div для каждого диалога в разметке, используя Close и передавая значения непосредственно с помощью Jquery Selectors
$(function() {
$('#confirmDeleteDialog').dialog({
autoOpen: false,
width: 300,
title: 'Confirm Delete',
modal: true,
buttons: [{
text: 'ok',
click: function (e) {
$(this).dialog('close');
$.ajax({
url: '/Shift/ClearDay',
type: 'POST',
cache: false,
data: { shiftWeekID: $('#weekIDInput').val(), shiftLtDayID: $('#dayIDInput').val()},
success: function (result) {
LoadShiftPattern(function (result) {
$('#weekContainer').html(result);
SelectLastUsedField();
});
}
});
}
},
{
text: 'cancel',
click: function (e) {
$('#errorList').empty();
$(this).dialog('close');
}
}],
open: function (e) {
$(this).html("Clicking ok will cause this day to be deleted.");
}
});
}
function ClearDay() {
$('#confirmDeleteDialog').dialog('open');
}
Приветствия
Джеймс