最近我做了很多模态窗口弹出之类的事情,为此我使用了jQuery。我用来在页面上创建新元素的方法基本上是这样的:
$("<div></div>");
然而,我感觉这并不是最好或最有效的方法。从性能的角度来看,用jQuery创建元素的最佳方法是什么?
这个答案有以下建议的基准。
最近我做了很多模态窗口弹出之类的事情,为此我使用了jQuery。我用来在页面上创建新元素的方法基本上是这样的:
$("<div></div>");
然而,我感觉这并不是最好或最有效的方法。从性能的角度来看,用jQuery创建元素的最佳方法是什么?
这个答案有以下建议的基准。
当前回答
实际上,如果你使用$('<div>'), jQuery也会使用document.createElement()。
(看一下第117行)。
有一些函数调用开销,但除非性能非常关键(您要创建数百[数千]个元素),否则没有太多理由恢复到纯DOM。
只是为一个新网页创建元素可能是一种情况下,你最好坚持用jQuery的方式做事情。
其他回答
我个人建议(为了可读性):
$('<div>');
目前建议的一些数字(safari 3.2.1 / MAC OS x):
var it = 50000;
var start = new Date().getTime();
for (i = 0; i < it; ++i) {
// test creation of an element
// see below statements
}
var end = new Date().getTime();
alert( end - start );
var e = $( document.createElement('div') ); // ~300ms
var e = $('<div>'); // ~3100ms
var e = $('<div></div>'); // ~3200ms
var e = $('<div/>'); // ~3500ms
实际上,如果你使用$('<div>'), jQuery也会使用document.createElement()。
(看一下第117行)。
有一些函数调用开销,但除非性能非常关键(您要创建数百[数千]个元素),否则没有太多理由恢复到纯DOM。
只是为一个新网页创建元素可能是一种情况下,你最好坚持用jQuery的方式做事情。
这不是问题的正确答案,但我仍然想分享这个……
使用document.createElement('div')而跳过JQuery将大大提高性能,当你想要动态制作大量元素并附加到DOM时。
我使用$(document.createElement('div'));基准测试表明这种技术是最快的。我推测这是因为jQuery不需要将其标识为元素并自己创建元素。
您应该使用不同的Javascript引擎运行基准测试,并根据结果来衡量您的受众。然后再做决定。
如果您有很多HTML内容(不仅仅是一个div),您可以考虑将HTML构建到隐藏容器中的页面中,然后更新它并在需要时使其可见。这样,浏览器就可以预先解析大部分标记,避免在调用时被JavaScript缠住。希望这能有所帮助!