簡體   English   中英

如何同步jQuery對話框以充當Java的alert()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM