Javascript 创建一个类似于window的函数。根据按钮单击确认哪个返回true或false

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")

我正在尝试创建一个类似于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");
    $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来模拟阻止用户与其他页面元素交互的模式行为。