0

複数のコールバック関数を使用して関数を作成しようとしています。私はこれを正しくやっていますか、それとももっと良い方法がありますか?

    $('.question a').click(function(ev) {
        $('.answers').load(url, function() {
            $('#AnswerBox').addClass('mceEditor', 
                function() {tinyMCE.init({
                    theme : "advanced",
                    mode : "specific_textareas",
                    editor_selector : "AnswerBox",
                    elements: "AnswerBox",
                    plugins : "fullpage",
                    theme_advanced_buttons3_add : "fullpage",
                });
            })
        })              
    return false;
    });

この方法で2層の機能を実行できることは知っていますが、それ以上の機能も実行できますか?

4

3 に答える 3

1

どの関数スコープにも他の関数定義を含めることができ、その関数定義にはより多くの定義などを必要なだけ深く含めることができます。

これを行うと、それらの関数定義はその関数スコープ内でのみローカルになります。どの関数スコープにも他の関数定義を含めることができるため、任意の深さまで行くことができます。おそらく、特定の javascript 制限内の一部の内部メモリまたはスタック制限によってのみ制限されます。実際には、実用的な目的のない不正な構造を意図的に作成しない限り、限界に達する可能性は低いです。

于 2013-01-15T03:26:11.907 に答える
1

はい、より多くの関数をネストできますが、コールバック関数は、非同期イベントがいつ完了するかを知るために使用されます。設定クラスは非同期に発生しないため、addClassにコールバック関数はありません。したがって、次のようになります。

$('.question a').click(function(ev) {
        $('.answers').load(url, function() {
            $('#AnswerBox').addClass('mceEditor'). 
                tinyMCE({
                    theme : "advanced",
                    mode : "specific_textareas",
                    editor_selector : "AnswerBox",
                    elements: "AnswerBox",
                    plugins : "fullpage",
                    theme_advanced_buttons3_add : "fullpage"
            });
        });         
    return false;
    });
于 2013-01-15T03:26:46.820 に答える
1

「3 層の深さ」を超えるネストが可能です。ただし、メソッドの使用jQuery.addClass方法が間違っています。

http://api.jquery.com/addClass/を参照してください。

おそらく、それが問題の場所です。

于 2013-01-15T03:22:41.463 に答える