首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery getScript()未解析

jQuery getScript()未解析
EN

Stack Overflow用户
提问于 2013-07-28 10:00:11
回答 1查看 388关注 0票数 1

我使用jQuery的getScript()加载单独的javascript文件。这些文件似乎加载得很好(我知道这一点,因为当我放置一个不正确的URL时,它会抛出一个错误--正确的URL没有错误)。

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

代码语言:javascript
复制
(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 );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-28 10:04:59

done回调从未被触发,因为您已经显式地创建了一个Deferred,并且从未解析它。$.when等待所有承诺得到解决。

$.Deferred中的代码

代码语言:javascript
复制
$( deferred.resolve );

...will将Deferredresolve函数调度为ready回调,但是该函数将被错误的this调用(document而不是Deferred对象;more:http://blog.niftysnippets.org/2008/03/mythical-methods.html),这可能会导致它抛出错误ready掩码。

只需完全删除该$.Deferred,或者如果您的目标是等待ready,则确保在调用resolve时正确设置了this

代码语言:javascript
复制
$.Deferred(deferred) {
    $(function() {
        deferred.resolve();
    });
})

或者:

代码语言:javascript
复制
$.Deferred(deferred) {
    $($.proxy(deferred.resolve, deferred));
})

或者,但请注意以下评论:

代码语言:javascript
复制
$.Deferred(deferred) {
    // Deprecated in jQuery 1.8
    $(document).on("ready", deferred, "resolve");
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17907046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档