6

文字列を介してオブジェクトを作成するのが同じオブジェクトよりも遅い理由を誰かが説明して、jQueryで addClass() メソッドを実行できますか?

addClass() メソッドの方が遅くなると思っていましたが、そうではありません。なぜだろう?

このjsPerfを見てください - http://jsperf.com/jquery-append-with-class-and-with-method-addclass

4

3 に答える 3

4

これは、 のような要素名のみを渡すと、 document.createElement()$("<div>")の呼び出しにマップされるためです。

一方、要素とその属性 ( など) を渡すと、document.createDocumentFragment()$("<div class='foo'>")の呼び出しにマップされます。これは、その後にプロパティに書き込むよりも遅くなります。createElement()className

于 2011-11-23T15:54:38.747 に答える
3

とにかく、HTML文字列を解析してから(または内部で同等のものを)実行する必要があるため、時間が$('<div class=“foo” />')かかります。addClass()

于 2011-11-23T15:47:34.663 に答える
0

3番目のテストケースを追加してみました

viaObject = $("<div>", { class: "foo-"+counterN });
biz.append(viaObject);
counterN++;

$("<div>").addClass("foo-")FrédéricHamidi(document.createElement()とdocument.createDocumentFragment())が指摘した理由と同じくらい速いはずだと思っていましたが、それでも遅くなりました。

おそらく、addClass()は、オブジェクトのプロパティにアクセスするよりも高速です。

いずれにせよ、これはあなたがこのような要素を作成する必要があることを証明しています

 $("<div>", { class: "foo-"+counterN }); 

そしてこれが好きではない:

 $('<div class="foo-' + counterS + '" />');
于 2011-11-23T16:01:29.143 に答える