jQuery确认/取消自制功能无法正常工作

时间:2014-09-21 09:02:48

标签: javascript jquery alert prompt

我已经制作了自己的,自制的,是/否的功能,但它不起作用。

这是功能:

function CoverAndShow (title, text, type) {
    if (type == "confirm") {
        $("body").append("<div class='msg'><h3>" + title + "</h3><p>" + text + "</p><input class='ok' type='button' value='OK' /><input type='button' class='cancel' value='Cancel' /></div>");
    }

    $(".ok").click(function() {
        return true;
    });

    $(".cancel").click(function() {
        return false;
    });
}

这是我在代码中单击“确定”的代码:

    $("#ask").click(function() {

    if (CoverAndShow("Title","Should I operate?", "confirm") == true) {
        alert("true");
    }

这不起作用,也不会返回任何内容 非常感谢帮助!

1 个答案:

答案 0 :(得分:4)

你需要在这里使用回调。你不能从这种功能返回(查找asyncronity)。将函数作为最后一个参数传递给CoverAndShow,然后使用返回值调用它。

function CoverAndShow (title, text, type, callback) {
    if (type == "confirm") {
        $("body").append("<div class='msg'><h3>" + title + "</h3><p>" + text + "</p><input class='ok' type='button' value='OK' /><input type='button' class='cancel' value='Cancel' /></div>");
    }

    $(".ok").click(function() {
        callback(true);
    });

    $(".cancel").click(function() {
        callback(false);
    });
}

$("#ask").click(function() {

   CoverAndShow("Title","Should I operate?", "confirm", function(ret){
      if (ret) { // no need to explicitly check for true
         alert("true");
       }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="ask">ask</div>