1

こんにちは私はjqueryダイアログを閉じるのに問題があります。私が持っているのは、ブラウザにメッセージを送信するコメット接続です。私がやりたいのは、何かしたいというメッセージを受け取ったら、ダイアログを閉じてから、さらに何かをすることです。残念ながら、実行すると:$('#dialog')。dialog( "close"); それは私の現在のjavascriptコードを終了します。これを回避する方法はありますか?または、変数を使用して最後にクローズが実行されることを確認する必要がありますか?

たとえば、http: //jsfiddle.net/hKhMC/の後で、私のテキストが変更されないことがわかります。

これは、私の実際のコードが後で多くの計算を行う簡単なデモンストレーションであるため、閉じる前にテキストを移動することを伴わない解決策があるかどうか疑問に思いました。

4

2 に答える 2

5

ダイアログを閉じるイベントを再帰的に発生させています。Chromeでは、jsfiddleの例でUncaught RangeError: Maximum call stack size exceeded。これは 、ダイアログを閉じた後に.dialog('close')メソッドがイベントを発生させるためです。dialogcloseこのイベントは、誰かがXダイアログツールバーのボタンをクリックするか、ESCキーを押したときにも発生します。

ただし、ダイアログの初期化中にこのイベントをバインドしてから、再度トリガーできる同じメソッドを呼び出しています。

于 2012-08-27T16:56:32.687 に答える
1

だから私は自分の問題の解決策を見つけました。

以下は、JQueryUIダイアログを作成するために使用されたコードです

$('#currentCallDialog').dialog({
    autoOpen : false,
    height : 350,
    width : 550,
    modal : true,
    buttons : {
        "Open" : function() {
            //.. Do something
        }
    },
    close : function() {
        $(this).dialog("close");
    }
});

問題は閉じるボタンにあります。dialog( "close");を呼び出そうとします。これを削除すると、すべて正常に機能しました。動作例については、以下のコードを参照してください。

$('#currentCallDialog').dialog({
    autoOpen : false,
    height : 350,
    width : 550,
    modal : true,
    buttons : {
        "Open" : function() {
            //.. Do something
        }
    },
    close : function() {
        //.. Do something
    }
});
于 2012-08-27T00:28:12.767 に答える