Chcesz zmienić konfigurację okna dialogowego na kliknięcie (w tym przypadku zachowanie przycisku Ok). Do tego masz wiele rozwiązań, wszystkie są brzydkie (imo). radziłbym generowania okno w locie, a niszcząc ją, gdy zostały wykorzystane, coś takiego:
$("#delete").click(function(ev) {
ev.preventDefault(); // preventDefault should suffice, no return false
var href = $(this).attr("href");
var dialog = $("<div>Are you sure?</div>");
$(dialog).dialog({
resizable: false,
autoOpen: true,
modal: true,
buttons: {
'OK': function() {
window.location = href;
$(this).dialog("close");
},
'Cancel': function() {
$(this).dialog("close");
}
},
close: {
$(this).remove();
}
});
});
Albo jeszcze lepiej, hermetyzacji dialogowym Potwierdzanie do funkcji, tak aby można je ponownie wykorzystać, tak jak :
function confirmDialog(msg) {
var dialog = $("<div>"+msg+"</div>");
var def = $.Deferred();
$(dialog).dialog({
resizable: false,
autoOpen: true,
modal: true,
buttons: {
'OK': function() {
def.resolve();
$(this).dialog("close");
},
'Cancel': function() {
def.reject();
$(this).dialog("close");
}
},
close: {
$(this).remove();
}
});
return def.promise();
}
a następnie używać go jak tak
confirmDialog("are your sure?").done(function() {
window.location = $(this).attr("href");
}).fail(function() {
// cry a little
});
Być może trzeba będzie sprawdzić, czy obiekt został odroczony odrzucone lub rozwiązane przed zamknięciem okna dialogowego, w celu zapewnienia potwierdzenia r wyrzuca przy zamknięciu (a nie tylko po naciśnięciu przycisku "Anuluj"). Można to zrobić przy warunku def.state() === "oczekuje".
Więcej informacji na temat jQuery odroczony: http://api.jquery.com/category/deferred-object/
blisko: {$ (this) .Wykręcić();} zwraca błąd – Vlado