1

いくつかのlinkbuttons を持つメニューがあります<a class="selected">。1 つをクリックすると class が適用され、selected別のものをクリックするとそのクラスを削除し、このクラスを新しくクリックされたリンクボタンに割り当てる必要があります。

したがって、同時に特定のクラス名を持つ要素は 1 つしかないため、このクラスを削除するためにそれを選択したいと考えています。

知っている:

$('.myclass').removeClass('myclass');

DOMのすべての要素をチェックする必要があるため、効率的ではないと思います

<a class="selected">この要素を取得し、そのクラスを削除するより効率的な方法はどれselectedですか?

4

2 に答える 2

7

いいえ、すべての要素をチェックするわけではありません。最適化されたgetElementsByClassName関数を使用します。

そのため、id で検索するよりも速くなくても、クラスで要素を検索することは、jQuery または Vanilla JS の両方を使用して十分に高速です。

これは、要素が 1 つしかないため (要素に他のクラスがない場合)、jQuery を高速化することが本当に重要な場合は、jQuery による解析を回避できます。

document.getElementsByClassName('myclass')[0].className = '';

コードを見たい人にとって、これは要素のjQuery検索で可能な「スピードアップ」の1つです:

// Speed-up: Sizzle(".CLASS")
} else if ( (m = match[3]) && assertUsableClassName && context.getElementsByClassName ) {
    push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
    return results;
}
于 2012-12-20T13:49:44.917 に答える
0

それを行うためのより効率的な方法はありません。格納できる ID ではなく、クラスのみを持っている場合、最適なオプションクラス セレクターです。

于 2012-12-20T13:49:52.047 に答える