1

これを行うことの間に何か違いはありますか?

$(".topHorzNavLink").click(function() {

    var theHoverContainer = $("#hoverContainer");

    var thisHorzLink = $(this).attr('linkItem');

    if (thisHorzLink == "link2") {
        if ($("#hoverContainer").is(":visible") == true) { 
            $("#hoverContainer").slideUp('slow');
        } else {                
            $("#hoverContainer").slideDown('slow');
        }
    }

});

またはこれ:

$(".topHorzNavLink").click(function() {

    var theHoverContainer = $("#hoverContainer");

    var thisHorzLink = $(this).attr('linkItem');

    if (thisHorzLink == "link2") {
        if (theHoverContainer.is(":visible") == true) { 
            theHoverContainer.slideUp('slow');
        } else {                
            theHoverContainer.slideDown('slow');
        }
    }

});
4

3 に答える 3

6

2番目のメソッドは、セレクター操作を$("#hoverContainer")1回だけ実行し、同じセレクター操作を3回実行して、毎回3つの新しいjQueryオブジェクトを作成するのではなく、同じjQueryオブジェクトを繰り返し使用するため、より効率的です。

コンパクトさと効率のために、これを行うことができます:

$(".topHorzNavLink").click(function() {
    if ($(this).attr('linkItem') == "link2") {
        $("#hoverContainer").slideToggle('slow');
    }
});

または、linkItem属性が動的に割り当て/変更されていない場合は、次のようにセレクターにベイク処理できます。

$(".topHorzNavLink[linkItem='link2']").click(function() {
    $("#hoverContainer").slideToggle('slow');
});
于 2012-06-20T19:51:18.093 に答える
1

あなたも使用.slideToggle()できます

$(".topHorzNavLink").click(function() {

    var theHoverContainer = $("#hoverContainer");

    var thisHorzLink = $(this).attr('linkItem');

    if (thisHorzLink == "link2") {

            theHoverContainer.slideToggle('slow');
    }

});
于 2012-06-20T19:52:29.480 に答える
1

それらは多かれ少なかれ同じ速度です。jQueryは、「#」を探し、そのIDに対してdocument.getElementByIdを実行することにより、IDセレクターをすでに最適化しています。この機能を数千回実行しない限り、劇的な速度の向上は見られません。

私はあなたが最も快適なアプローチを取ります。最初の方法は、何を選択するかをより明確にします。2番目の方法では、セレクターを1回だけ定義するため、後で簡単に変更できます。

于 2012-06-20T19:58:32.450 に答える