0

リンク上のクラスを切り替えるための優れた標準 jQuery 関数があります。リンクに追加された新しい背景色を想像してみてください。

$(document).ready(function(){
        $('.blocklink a').click(function(){
            $(this).parent().find('a').removeClass('active');
            $(this).addClass('active');
            return false
        });
    });

シンプルですが、このようなスクリプトが必要になる頻度を考えると、これらのスクリプトにかかる時間を大幅に節約できるかどうか疑問に思っていました。--these

$(document).ready(function(){
            $('.blocklink a').click(function(){
                $(these).removeClass('active');
                $(this).addClass('active');
                return false
            });
        });

.click(function .scroll(function .mouseenter(functionこれらの用語を作成する方法はありますか? etc... etc...で指定された要素の最初のグループが何であれ、フィラーとして

4

4 に答える 4

2

要素が動的に変化することを期待していない場合 (つまり、要素を追加または削除しない場合)、セレクターの結果をキャッシュできます。

$(document).ready(function() {
    var $these = $('.blocklink a');
    $these.click(function() {
        $these.removeClass('active');
        $(this).addClass('active');
        return false
    });
});
于 2012-09-20T13:27:01.650 に答える
1

大幅な節約はできませんが、によって返された jQuery オブジェクトをキャッシュできます$('.blocklink a')

$(document).ready(function() {
    var $these = $('.blocklink a').click(function() {
        $these.removeClass('active');
        $(this).addClass('active');
        return false
    });
});

FWIW、パフォーマンスに興味がある場合、現在持っているセレクターはすべての子孫の中aから を検索しますが、$(this).parent()子供だけが必要なようです。

>そのことを念頭に置いて、セレクターを使用してトラバースできるのは (子孫ではなく) 子のみです。

$(document).ready(function() {
    var $these = $('.blocklink > a').click(function() {
        $these.removeClass('active');
        $(this).addClass('active');
        return false
    });
});

さらに、children()子を検索しますが、find()-as はすべての子孫を検索します。

于 2012-09-20T13:28:50.247 に答える
0

簡単に言えば:いいえ。

ただし、.siblings()ti を使用して少し簡略化できます。

于 2012-09-20T13:28:13.900 に答える
0

関数を使用できますか?これにより、他の .blocklink 要素のアンカーに影響を与えることができなくなります

$('.blocklink a').click(function(){
    parentAnchors(this).removeClass('active');
    $(this).addClass('active');
    return false
});

function parentAnchors(elem){
    return $(elem).parent().find('a');
}
于 2012-09-20T13:37:26.127 に答える