[英]How to synchronize jQuery dialog box to act like alert() of Javascript
我目前正在開發使用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中編寫與用戶交互並阻止javascript解釋器的函數。 confirm
可以這樣做,因為它是內置的瀏覽器,是用C ++(或其他任何語言)編寫的。
使用替代選項,創建您的一個函數,在用戶生成某些事件后執行該函數。 並調用一個對話框事件,使您具有相同的行為。
恩。 $(“#dialog-modal”)。dialog({可調整大小:false,寬度:350,模式:true,按鈕:[{文本:“ OK”,寬度:80,高度:26,單擊:function(){$ (this).dialog(“ close”);}}]});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.