3

たとえば、順序付けられていないリストがある場合、次のように言います。

<ul>
    <li class="foo">Foo</li>
    <li class="bar">Bar</li>
</ul>

$('ul li.foo')$('li.foo')またはとして foo を選択できます$('.foo')

次に、どちらの方法がより効率的であるか (ある場合) とその理由を説明します。それとも、同じクラス名を持つ他の要素がある場合に、子を選択するときに親を指定するのは、競合を取り除くためだけの理由ですか?

4

2 に答える 2

6

単純なクラス セレクター.fooは、利用可能な場合はネイティブを使用できるため、最新のブラウザーで最速になりgetElementsByClassNameます。

これを正確に示すベンチマークは次のとおりです。

ここに画像の説明を入力

重要なすべてのブラウザーでそのパフォーマンス テストを実行し、結果に基づいて決定を下すことができます。または、状況に最も適したセレクターを使用してください。現実の世界では、目立った違いはまったくないからです。

アップデート

さまざまなブラウザーのパフォーマンス結果を確認できるようになったので、新旧の違い ( getElementsByClassNameIE7 と 8 の欠如) を確認できます。ただし、最近は新しいブラウザから大幅に多くのトラフィックを受け取る可能性がありますが、私はあなたのサイトを知りません. なんらかの理由でトラフィックの 90% が IE7 から来ている場合は、おそらくli.foo.

于 2012-05-16T15:27:34.917 に答える