jQuery getScript()无法解析

时间:2013-07-28 10:00:11

标签: jquery jquery-deferred getscript

我正在使用jQuery的getScript()来加载单独的javascript文件。文件似乎加载正常(我知道这是因为当我输入错误的URL时,它会抛出错误 - 没有错误的正确的URL)。

但是,done()功能似乎不起作用。控制台不会记录“完成”,也不会调用任何函数。

(function($) {
    $.when(
        $.getScript( templateUrl + "/assets/js/variables.js" ),
        $.getScript( templateUrl + "/assets/js/functions.js" ),
        $.getScript( templateUrl + "/assets/js/events.js" ),
        $.Deferred(function( deferred ){
            $( deferred.resolve );
        })
    ).done(function(){

        console.log("done");

        swapBackgroundImgs();
        singleLarge();
        bindFlexorder();
        bindSvgeezy();
        bindPlaceholder();
        preloadImages();

    });
})( jQuery );

1 个答案:

答案 0 :(得分:1)

永远不会触发done回调,因为您已明确创建了Deferred并且从未解决过它。 $.when等待所有的承诺得到解决。

$.Deferred中的代码:

$( deferred.resolve );

...会将Deferred的{​​{1}}函数计划为resolve回调,但函数将被调用错误ready({{1}而不是this对象;更多:Mythical methods),这可能会导致错误document埋葬。

完全删除Deferred,或者如果您的目标是等待ready,请确保在调用$.Deferred时正确设置ready

this

或:

resolve

或者,但请注意评论:

$.Deferred(deferred) {
    $(function() {
        deferred.resolve();
    });
})