我正在使用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 );
答案 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();
});
})