Javascript 创建一个类似于window的函数。根据按钮单击确认哪个返回true或false
我正在尝试创建一个类似于window.confirm的函数,可以这样使用:Javascript 创建一个类似于window的函数。根据按钮单击确认哪个返回true或false,javascript,jquery,Javascript,Jquery,我正在尝试创建一个类似于window.confirm的函数,可以这样使用: if (I.confirmDialog.open("Do you really want to Cancel")) { // do this } else { // do this } I.confirmDialog = { open: function(confirmMsg) { var $modal = I.modals.new("small confirm-dialog")
if (I.confirmDialog.open("Do you really want to Cancel")) {
// do this
}
else {
// do this
}
I.confirmDialog = {
open: function(confirmMsg) {
var $modal = I.modals.new("small confirm-dialog");
$modal.find("h1").text(confirmMsg);
$modal.append("<div class=\"action-wraper\"><a class=\"action-yes\" href=\"javascript:void(0);\">Yes</a><a class=\"action-no\"href=\"javascript:void(0);\">No</a></div>");
I.modals.open($modal);
$modal.find(".action-yes").click(function() { I.modals.close(); /* return true will not work*/ });
$modal.find(".action-no").click(function() { I.modals.close(); /* return false will not work*/ });
}
};
我编写的弹出函数如下所示:
if (I.confirmDialog.open("Do you really want to Cancel")) {
// do this
}
else {
// do this
}
I.confirmDialog = {
open: function(confirmMsg) {
var $modal = I.modals.new("small confirm-dialog");
$modal.find("h1").text(confirmMsg);
$modal.append("<div class=\"action-wraper\"><a class=\"action-yes\" href=\"javascript:void(0);\">Yes</a><a class=\"action-no\"href=\"javascript:void(0);\">No</a></div>");
I.modals.open($modal);
$modal.find(".action-yes").click(function() { I.modals.close(); /* return true will not work*/ });
$modal.find(".action-no").click(function() { I.modals.close(); /* return false will not work*/ });
}
};
I.confirmDialog={
打开:函数(confirmMsg){
var$modal=I.modals.new(“小确认对话框”);
$modal.find(“h1”).text(confirmMsg);
$modal.append(“”);
I.模态打开($modal);
$modal.find(“.action yes”)。单击(函数(){I.modals.close();/*返回true将不起作用*/});
$modal.find(“.action no”)。单击(函数(){I.modals.close();/*返回false将不起作用*/});
}
};
但问题是我无法从I.confirmDialog.open()
返回true或false。执行I.confirmDialog.open()
函数不会等待按钮单击,并且单击回调的返回不会影响I.confirmDialog.open()
的返回值
我想知道window.confirm是如何编写的(如果可能的话)这里的问题是,所操作的模式实际上是异步的(因为您必须等待用户输入),因此您不能
返回任何内容
相反,为方法提供一些回调函数,这些函数可以在所需事件中调用:
I.confirmDialog = {
open: function(confirmMsg, yesCallback, noCallback) {
var $modal = I.modals.new("small confirm-dialog");
$modal.append('<div class="action-wraper"><a class="action-yes" href="#">Yes</a><a class="action-no" href="#">No</a></div>').find("h1").text(confirmMsg);
I.modals.open($modal);
$modal.find(".action-yes").click(function(e) {
e.preventDefault();
I.modals.close();
yesCallback && yesCallback();
});
$modal.find(".action-no").click(function(e) {
e.preventDefault();
I.modals.close();
noCallback && noCallback();
});
}
};
这里的问题是,所操作的模式实际上是异步的(因为您必须等待用户输入),因此您不能返回任何内容
相反,为方法提供一些回调函数,这些函数可以在所需事件中调用:
I.confirmDialog = {
open: function(confirmMsg, yesCallback, noCallback) {
var $modal = I.modals.new("small confirm-dialog");
$modal.append('<div class="action-wraper"><a class="action-yes" href="#">Yes</a><a class="action-no" href="#">No</a></div>').find("h1").text(confirmMsg);
I.modals.open($modal);
$modal.find(".action-yes").click(function(e) {
e.preventDefault();
I.modals.close();
yesCallback && yesCallback();
});
$modal.find(".action-no").click(function(e) {
e.preventDefault();
I.modals.close();
noCallback && noCallback();
});
}
};
据我所知,jQuery承诺不可能从javascript创建模式对话框。基本上,您必须依赖于click事件回调。此外,还可以使用透明的完整页面div来模拟阻止用户与其他页面元素交互的模式行为。据我所知,jQuery承诺不可能从javascript创建模式对话框。基本上,您必须依赖于click事件回调。此外,还可以使用透明的完整页面div来模拟阻止用户与其他页面元素交互的模式行为。