5

HTML ドキュメント内でこのコードを使用すると、次のように動作します。

$('a.tocenter[href*=#]').click( function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
    && location.hostname == this.hostname) {
    var $target = $(this.hash);
    $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
    if ($target.length) {
    var targetOffset = $target.offset().top;
    $('html,body').animate({ scrollTop: targetOffset - ( $(window).height() - $target.outerHeight(true) ) / 2 }, 1000);
    return false;}
    }
});

このコードを外部 JavaScript ファイル内に配置してから、次のようにリンクしようとすると:

<script src="js/main.js"></script>

動作していません。動作させるには、内部にラップする必要がありました:

$( window ).load(function() {
    ...
});

私がこれを行うと、うまくいきます。

私は JavaScript/jQuery のまったくの初心者ですが、これは正常ですか、それとも何か間違っているのでしょうか? なぜそのように振る舞うのですか?それを行うのは良い習慣ですか?

これを外部ファイルに含める唯一の目的は、コードをクリーンで理解しやすい状態に保つことです。

4

4 に答える 4