0

私はJavaScriptの純粋な開発者であり、セレクターモジュールをテストしたときに独自のフレームワークを設計し、パフォーマンスという非常に大きな問題を発見しました

セレクター モジュールでは、jquery のような非常に複雑なセレクターは使用しません。単純なセレクターを使用します。場合によっては、セレクターを実行すると、ページの本文にあるすべての要素を取得し、それらをループする必要があります。たとえば TD 要素のような特定の種類の要素を取得するには、>>>> セレクターで getElementsByTagName('TD') を使用するように言わないでください。開発者に複数の tagName を選択させることができます。

getElementsByTagNames('td,tr')

その場合、すべてを取得してからループして、必要なアイテムのみを選択する必要があります

私はその方法が非常にパフォーマンスイーターであることを発見しました一方、jqueryはアイテムを選択するのに陽気な速度を持っていますjqueryはループも行いませんか、それで私の主な質問はここにあります

JavaScript を使用して高パフォーマンスのセレクターを実行する方法:)

ありがとう

4

2 に答える 2

7

jqueryはループもしませんか

jQueryは、既存のセレクターライブラリ(sizzle.js)を使用するのに十分スマートです。

Sizzleは、ブラウザに作業を任せるのに十分なほど賢いです。document.querySelectorAllトリックを行います。

編集:実際には、sizzle.jsはjqueryの固有の部分でしたが、現在は別のプロジェクトです

于 2012-07-08T15:04:35.690 に答える
3

getElementsByTagName次のようなことを行うと、引き続き使用できます。

function getElementsByTagNames(elements) {
    elements = elements.split(",");
    var foundElements = [];
    for(var i = 0, len = elements.length; i<len; i++) {
        foundElements.push(document.getElementsByTagName(elements[i]));
    }
    return foundElements;
}

を呼び出すと、すべての要素と要素をgetElementsByTagNames("tr,div")含む配列が返されます。trdiv

于 2012-07-08T15:01:11.763 に答える