JQuery boîte de Dialogue Modale - Détruire ou à Proximité?

J'ai récemment rencontré une situation où j'ai été un peu confus au sujet de la technique que je doit utiliser pour traiter avec JQueryUI Modal de la boîte de Dialogue.

J'ai une fonction: ClearDay(weekID, ltDayID). Actuellement, il est responsable de la création d'une boîte de dialogue avec deux boutons: ok et annuler.

ok va déclencher un appel ajax, en passant weekID et ltDayID pour le serveur.

annuler de vider la boîte de dialogue div et appel .dialog('destroy') sur la cible div.

Ma question est: qui approche suivante dois-je utiliser?

Détruire/Re-Créer une boîte de Dialogue à chaque appel - pour que je puisse passer des paramètres à l'appel ajax et n'ont qu'un div pour l'ensemble de la boîte de dialogue dans le balisage

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');
}
});
}

Créer la boîte de dialogue qu'une seule fois, mais avoir un div pour chaque boîte de dialogue dans le balisage, à l'aide de Près, et en passant directement les valeurs à l'aide des Sélecteurs Jquery

$(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');
}

Acclamations,

James

InformationsquelleAutor Zack | 2011-04-15