2012-07-04 206 views
0

我有2個函數。 First包含Jquery-UI對話框,並從Second函數調用。喜歡的東西:函數調用另一個函數javascript

function First() { 
    $('div').dialog({ 
     buttons: { 
      "Ok": function() { /* code */ 
      } 
     } 
    }); 
} 

function Second() { 
    First(); 
    /* rest of this function code is depend upon the "Ok button" 
     function code */ 
} 

現在我的問題是,調用函數First後腳本的執行不會等待dialog's Ok button press。我該怎麼做,所以只有在按下Ok button之後,控制才能從功能First返回?

+1

使用OK按鈕的回調選項 – Blaster

+0

寫OK功能的代碼 –

+0

移動'秒'功能'OK按鈕first'函數調用後'代碼'點擊我 – TRR

回答

2

從函數Second中調用First後的部分變成第二個函數(這裏叫做SecondOkHandler)。呼叫First一個新的參數(這個回調函數),並在功能上First「OK」稱之爲:

function First(okCallback) { 
    $('div').dialog({ 
     buttons : { 
      "Ok" : okCallback 
     } 
    }); 
} 

function Second() { 
    First(SecondOkHandler); 
} 

function SecondOkHandler() { 
    /* rest of this function code is depend upon the "Ok button" function code */ 
} 

另見this example

=== UPDATE ===

爲了使它更復雜,這裏a link to an example更多的回調。

+0

已經添加[示例] (http://jsfiddle.net/HD5V8/1/)。 – scessor

1
function First(waitTillOk) { 
     $('div').dialog({ 
      buttons: { 
       "Ok": function() { 
         /* code */ 
         if(typeof waitTillOk == "function"){ 
         waitTillOk(); 
         } 
       } 
      } 
     }); 
    } 

    function Second() { 
     var waitTillOk = function(){ 
     /* rest of this function code is depend upon the "Ok button" 
      function code */ 
    } 
    First(waitTilOk); 
    } 
相關問題