我想在函数中调用一个模态。并根据点击模态我想继续我的功能。
我知道可以通过不同的承诺或回电来完成。但我无法理解如何做到这一点
我的功能是
$(".delete").click(function(){
/// call a modal
$(".confirm").modal();
/*
now if clicked yes in modal
then continue with my ajax call
else return false
*/
});
我期待延期承诺或回拨答案。因为我想知道它们在这种情况下是如何工作的
答案 0 :(得分:1)
试试这个
$(".confirm").dialog({
modal: true,
buttons: {
Yes: function () {
// Ajax call
$(this).dialog("close");
},
No: function () {
$(this).dialog("close");
}
},
close: function (event, ui) {
$(this).remove();
}
});
编辑:这是一个带有“回调”的版本(不想添加新答案,因为这包含基础知识,只是稍加重构):
function modalwithcallbacks(selector, yes, no, close)
{
$(selector).dialog({
modal: true,
buttons: {
Yes: yes,
No: no,
},
close: close
});
}
modalwithcallbacks(
".confirm",
function () { alert("yes"); $(this).dialog("close"); },
function () { alert("no"); $(this).dialog("close"); }
function () { $(this).remove(); }
);
下一步是将其设为$.fn.
以删除选择器部件或直接在方法中添加对话框。
您可以选择要进行哪些操作作为回调(例如只是“是”)并保持关闭/不内联,给出:
$(".delete").click(function() {
modalwithcallbacks(".confirm", function() {
// yes clicked, continue with ajax call
});
});
答案 1 :(得分:0)
以下是如何使用自己的延迟:
var deferred = $.Deferred();
$(".confirm").dialog({
modal: true,
buttons: {
Yes: function () {
// Ajax call
deferred.resolve("yes");
},
No: function () {
deferred.resolve("No");
}
}
});
deferred.done(function(value) {
$(".confirm").dialog('close');
alert(value);
});
https://jsfiddle.net/mjwava8n/
亲切的问候