我目前正在使用 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/