1

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 );
4

1 に答える 1

1

を明示的に作成して解決していないため、doneコールバックはトリガーされませんDeferredすべての promise が解決されるのを$.when待ちます。

あなたが持っているコード$.Deferred

$( deferred.resolve );

Deferred...のresolve関数をreadyコールバックとしてスケジュールしますが、関数は間違ったものthis(オブジェクトdocumentではなくDeferred、詳細:神話上のメソッド) で呼び出され、おそらくエラーをスローしますready

単にそれを$.Deferred完全に削除するか、またはあなたの目標が を待つことである場合は、 を呼び出すときに正しく設定されreadyていることを確認してください:thisresolve

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

また:

$.Deferred(deferred) {
    $($.proxy(deferred.resolve, deferred));
})

または、コメントに注意してください:

$.Deferred(deferred) {
    // Deprecated in jQuery 1.8
    $(document).on("ready", deferred, "resolve");
})
于 2013-07-28T10:04:59.793 に答える