1

理にかなっている場合はたださまよって、jquery document ready関数内で以下のようなifステートメントを使用して、特定のページにある場合にのみスクリプトが実行されるようにします。

 if(window.location.href.indexOf("our-team")>= 0){
            if(window.location.hash) {
                var hash = window.location.hash;
                $('#teamMembers div:not('+hash+')').hide();
                $("#teamMenu .imgHolder").removeClass('active');
                $('a[href='+hash+']').closest(".imgHolder").addClass('active');
            }
            else {
                $('#teamMembers div:not(#member1)').hide();
            }
        }

これはおそらくあまり効率的ではありませんが、現在のページのURLにour-teamが含まれていない場合に、スクリプトの実行を停止するために必要なifステートメントです。

アイデアはありますか?

4

1 に答える 1

1

これらのアイテムが存在しないページで多くのセレクター操作を実行しない場合、最高のパフォーマンスが得られます。そのため、URL をチェックするか、その他の簡単なチェックを行うことで、これらのセレクター操作を簡単に除外できる場合は、パフォーマンス上の理由からそれが望ましい場合があります。

個人的には、URL を調べるよりも body タグのクラス名でページの種類を識別する方が好きです。つまり、コンテンツがどこから来たかではなく、期待されるコンテンツをもっと探していることを意味し、サイトを管理している誰かが URL のレイアウトや名前を変更することを決定した場合、コードはそれに依存しません.

if ($(document.body).hasClass("ourteam")) {
    if (window.location.hash) {
        var hash = window.location.hash;
        $('#teamMembers div:not('+hash+')').hide();
        $("#teamMenu .imgHolder").removeClass('active');
        $('a[href='+hash+']').closest(".imgHolder").addClass('active');
    } else {
        $('#teamMembers div:not(#member1)').hide();
    }
}

技術的に言えば、処理したくないページに使用しているセレクターが存在しない場合、最初の if ステートメントは必要ありません。しかし、適用されない多くのページで 4 ~ 5 回の余分なセレクター操作を実行するのは効率的ではありません。また、共通 JS ですべてのページにこのタイプのコードがあり、4 ~ 5 回の操作 * 50 ページになると、セレクター操作が大量に無駄になり、サイトのパフォーマンスに実際に影響を与える可能性があります。ページ数が多いほど、別のページでセレクターを繰り返す可能性が高くなり、あるページの JS が誤って別のページにも影響を与えていることがわかります。

于 2012-04-11T09:08:19.737 に答える