javascript - 如何同步 jQuery 对话框以像 Javascript 的 alert()

标签 javascript jquery

我目前正在使用 jQuery 开发要与我的应用程序一起使用的自定义对话框。问题是创建对话框的调用是异步的,即在显示之前执行它之后的代码行。这是我所做的,我创建了一个函数 DisplayConfirm() ,调用它时会创建一个模式对话框。我想像下面这样使用它:

if(DisplayConfirm()){
//do this
else
// do that

但我不能,因为 DisplayConfirm() 之后编写的代码行甚至在对话框创建之前就已执行。我怎样才能同步这个操作,这样我就不必使用回调函数了?

最佳答案

为什么要避免回调?他们很整洁:)

function displayConfirm(confirmStr, okCallback, cancelCallback) {
    $('<div class=alert />')
        .append('<p>' + confirmStr + '</p>')
        .append('<button class=ok-btn>Ok</button>')
        .append('<button class=cancel-btn>Cancel</button>')
        .appendTo(document.body)
        .delegate('.ok-btn', 'click', function (e) {
            okCallback(e);
        })
        .delegate('.cancel-btn', 'click', function (e) {
            cancelCallback(e);
        });
}

那里!你看,还不错 :)

注意:我只是在脑海中写下这篇文章。还没有测试过。

编辑:如果这还不够清楚,我在这里的建议是你必须使用回调,除非你想使用原生的 confirm 函数,只是正如@PaulPRO 在对该问题的评论中所述。

一旦 displayConfirm 函数如上定义,您就可以像这样将其与回调一起使用,

displayConfirm('Are you sure?', function (e) {
    // do if confirmed
}, function (e) {
    // do if not confirmed
});

我想说明的是,编写类似功能的简单回调确实并不太难,您应该这样做。

如果仍然不清楚,请告诉我。

关于javascript - 如何同步 jQuery 对话框以像 Javascript 的 alert(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951999/

相关文章:

javascript - 登录页面加载为部分页面而不是完整页面

javascript - 更改 :hover on iPad So First Touch is Registered as onclick and :hover Functionailty Still Works

javascript - Vue.js 组件不会对数据更新使用react

javascript - 在javascript中将isotime转换为shorttime

jquery - 上传并插入文本区域

javascript - 反跳网络请求

javascript - 为什么 Google Docs 的回调 URL 无法与 Tumblr API 一起使用?

php - 如何改进聊天框中评论的显示方式 JavaScript/PHP

jquery 移动输入格式化所需字段的更改

javascript - 如何使用 jquery 和 javascript 更改 div 的内容?