クリック時にダイアログの設定を変更したいとします(この場合、[OK]ボタンの動作)。あなたのために、あなたはそれらのすべてが醜い(イモ)多くのソリューションを持っています。 、
$("#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();
}
});
});
それとも、より良いあなたはそれを再利用できるように、関数に確認ダイアログをカプセル化し、そのような:私は、このようなものをその場でダイアログを生成し、それが使用された後、それを破壊アドバイスう:その後、
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();
}
、あなたが確認rを確保するために、ダイアログを閉じる前に、繰延オブジェクトが拒否または解決されたかどうかを確認する必要がありますので、
confirmDialog("are your sure?").done(function() {
window.location = $(this).attr("href");
}).fail(function() {
// cry a little
});
のようにそれを使用します終了時に排出されます(「キャンセル」ボタンを押すだけではありません)。これは、def.state()=== "pending"条件で行うことができます。あなたはあなたのためのデータを格納する.DATA()メソッドを使用して試すことができますhttp://api.jquery.com/category/deferred-object/
:{$(この).remove();}私は私のコードで.DATAでPHPの変数を渡すことができますどのようにエラー – Vlado