jQuery函数内的函数

时间:2013-01-15 03:15:35

标签: jquery function

我正在尝试编写一个具有多个回调函数的函数。我这样做是对还是有更好的方法?

    $('.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层功能,但是你还可以做更多吗?

3 个答案:

答案 0 :(得分:1)

您可以嵌套超过“3层深度”。但是,您正在错误地使用jQuery.addClass方法。

请参阅http://api.jquery.com/addClass/

这很可能就是你的问题所在。

答案 1 :(得分:1)

任何函数范围都可以包含其他函数定义,这些函数定义可以包含更多的定义等等。

执行此操作时,这些函数定义仅在该函数范围内是本地的。由于任何函数作用域都可以包含其他函数定义,因此它可以根据您的需要进行深入,可能仅受限于给定javascript限制中的某些内部内存或堆栈限制。实际上,除非你故意制造一些没有实际用途的狡猾结构,否则你不太可能达到极限。

答案 2 :(得分: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;
    });