3

「親IDが動的に生成されるループ内に以下のようなHTMLが含まれています。

<t:loop>
    <div id="demoid-10132165498794631" class="lineItem-container">
        <div>
            <select/>
        </div>
    </div>
</t:loop>

クラスlineItem-containerを含む親要素のIDを取得しようとしています。

次のスクリプトを使用してIDを取得しています。

var id = $("select").parents(".lineItem-container").attr("id").substring(6);

HTMLは最大1000回ループする可能性があり、IE8のパフォーマンスが非常に低下します。私の仮定は、パフォーマンスの問題はattrセレクターによって引き起こされるということです。

IE8からのJSログ

Function    Count   Inclusive Time (ms) Inclusive Time %    Exclusive Time (ms) Exclusive Time %    Avg Time (ms)   Max Time (ms)   Min Time (ms)

attr    431,334 21,609.38   12.65   14,406.25   8.43    0.05    2,234.38    0
attr    431,382 20,265.63   11.86   12,203.13   7.14    0.05    31.25   0
ATTR    239,906 20,531.25   12.02   9,125.00    5.34    0.09    8,156.25    0
attr    241,475 11,531.25   6.75    7,312.50    4.28    0.05    31.25   0

このプロセスを潜在的にスピードアップする方法について誰かが何か提案がありますか?

4

2 に答える 2

5

ID のような単純なものに attr セレクターを使用しないでください。

.attr("id")と置き換えます[0].id

于 2013-01-04T18:46:40.900 に答える
1

試す.closest()

余分なオーバーヘッドを取り除く可能性があるものではなく、最も近い祖先を取得します。all the parents for the element

var id = $("select").closest(".lineItem-container").attr("id").substring(6);
于 2013-01-04T18:44:11.073 に答える