0

私には2つの機能があります。FirstJquery-UI ダイアログを含み、Second関数から呼び出されます。何かのようなもの :

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ですか?

4

3 に答える 3

2

関数から2 つ目の関数 (ここでは と呼びます)Secondを呼び出した後の部分に移動します。新しいパラメーター (このコールバック関数) を指定して呼び出し、'ok' の関数でこれを呼び出します。FirstSecondOkHandlerFirstFirst

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 */
}

この例も参照してください。

===更新===

より複雑にするために、より多くのコールバックを含む例へのリンクを次に示します。

于 2012-07-04T06:38:44.327 に答える
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);
    }
于 2012-07-04T07:13:52.280 に答える
1

First() これは、パーサーがその行に遭遇するとすぐにその関数を呼び出すかっこを指定したためです。

関数applyまたはを呼び出す 2 つの Javascript メソッドのいずれかを利用できcallます。これを使用すると、関数は遭遇するとすぐに実行されません。

このリファレンスをチェックしてくださいhttp://odetocode.com/blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx

これを使用してみて、機能しない場合はお知らせください。

于 2012-07-04T06:36:58.860 に答える