4

テストに問題がない限り、Chrome でこの jsfiddle を実行すると、セレクターで約 11ms、$("#id")セレクターで 56ms になり$(div#id)ます。

$(document).ready(function(){
    startTime = new Date().getTime();
    for (i = 0; i < 10000; i++)
    {
        s = $("#idC12");
    }           
    $("#idResults").html("c12 by id only time: "+elapsedMilliseconds(startTime));

    startTime = new Date().getTime();
    for (i = 0; i < 10000; i++)
    {
        s = $("div#idC12");
    }           
    $("#classResults").html("c12 by tagname#id: "+elapsedMilliseconds(startTime));
});

function elapsedMilliseconds(startTime)
{
    var n = new Date();
    var s = n.getTime();
    var diff = s - startTime;
    return diff;
}

http://jsfiddle.net/MhWUc/

4

4 に答える 4

2

私がソースに参加してからしばらく経ちましたが、以前は#some-idセレクターが によって処理されていたdocument.getElementById()のに対し、より複雑なもの (例: tagName#some-id) はシズルを通過し、最終的に を通過する必要があることを知っていdocument.querySelectorAllます。

于 2013-04-02T17:19:29.277 に答える
1

$('div#id')getElementById()ネイティブメソッドに直接マップされないため、低速です。

于 2013-04-02T17:19:35.247 に答える
0

div#id を使用すると、最初にすべての div が選択されます。

#id を使用すると、ID のテーブルに直接移動します。

于 2013-04-02T17:20:04.890 に答える