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

您可以嵌套超过“3 层深度”。但是,您使用的jQuery.addClass方法不正确。

http://api.jquery.com/addClass/

那很可能是您的问题所在。

于 2013-01-15T03:22:41.463 回答
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 回答