Javascript jQuery性能

Javascript jQuery性能,javascript,jquery,Javascript,Jquery,想象一下,您必须经常进行DOM操作(在我的例子中,这是一种动态列表) 看看这个例子: var $buffer = $('<ul/>', { 'class': '.custom-example', 'css': { 'position': 'absolute', 'top': '500px' } }); $.each(pages[pindex], function(i, v){ $buffer.app

想象一下,您必须经常进行DOM操作(在我的例子中,这是一种动态列表)

看看这个例子:

var $buffer = $('<ul/>', {
                'class': '.custom-example',
  'css':  {
   'position':  'absolute',
   'top':   '500px'
  }
           });

$.each(pages[pindex], function(i, v){
 $buffer.append(v);
});

$buffer.insertAfter($root);
这很好用,我唯一不满意的是它的性能。我做缓存 我正在研究的所有DOM元素。 在不深入研究jQuery的源代码的情况下,我的性能问题是否有可能存在

jQuery是否使用DocumentFragments来追加内容

如果使用

var new = $('<div/>') 
var new=$(“”)
它只存储在内存中
现在不是吗?

一个接一个地创建DOM节点通常比创建HTML字符串并让浏览器(通过innerHTML)处理要慢。以下是相关内容。

逐个创建DOM节点通常比创建HTML字符串并让浏览器(通过innerHTML)处理要慢。以下是相关内容。

如果您考虑性能,您应该将所有
  • 子元素作为字符串来构造整个
    元素。对字符串连接使用“+=”操作。最后,使用jQuery在网页中插入构造的字符串


    请参阅关于字符串性能。

    如果您考虑性能,您应该将所有
  • 子元素作为字符串来构造整个
    元素。对字符串连接使用“+=”操作。最后,使用jQuery在网页中插入构造的字符串

    请参阅关于字符串性能。

    有一个(jQuery创建者)说jQuery实际上在内部使用文档片段。在下面的幻灯片中,他简要地解释了如何构建一个轻量级文档片段,并在一个操作中附加它,说明这是“”。如果您还没有(正如您自己提到的文档片段)的话,您可能希望对此进行研究

    至于使用
    $(“”)
    创建新元素的过程,则说明:

    但是,如果字符串看起来是一个HTML片段,jQuery将尝试创建HTML描述的新DOM元素。然后创建并返回引用这些元素的jQuery对象

    如果为更复杂的html片段提供单个标记和“浏览器的innerHTML机制”,jQuery将使用“本机JavaScript createElement()函数”。

    有一个(jQuery创建者)说jQuery实际上在内部使用文档片段。在下面的幻灯片中,他简要地解释了如何构建一个轻量级文档片段,并在一个操作中附加它,说明这是“”。如果您还没有(正如您自己提到的文档片段)的话,您可能希望对此进行研究

    至于使用
    $(“”)
    创建新元素的过程,则说明:

    但是,如果字符串看起来是一个HTML片段,jQuery将尝试创建HTML描述的新DOM元素。然后创建并返回引用这些元素的jQuery对象


    如果您为更复杂的html片段提供单个标记和“浏览器的innerHTML机制”,jQuery将使用“本机JavaScript createElement()函数”。

    几天前我也遇到了同样的问题。如果这样做,速度会快得多:

    var buffer = $('<ul class="custom-example" style="position: absolute; top:500px"></ul>')
    
    var html = ''
    
    $.each(pages[pindex], function(i, v){
       html += v
    });
    
    buffer.html(html)
    
    buffer.insertAfter($root);
    
    var buffer=$('
      ) var html='' $。每个(页[pindex],函数(i,v){ html+=v }); html(html) buffer.insertAfter($root);

      (注意:在您的示例中,缓冲区已经是jquery对象,您不需要为insertAfter重新选择它)

      我几天前也遇到了同样的问题。如果这样做,速度会快得多:

      var buffer = $('<ul class="custom-example" style="position: absolute; top:500px"></ul>')
      
      var html = ''
      
      $.each(pages[pindex], function(i, v){
         html += v
      });
      
      buffer.html(html)
      
      buffer.insertAfter($root);
      
      var buffer=$('
        ) var html='' $。每个(页[pindex],函数(i,v){ html+=v }); html(html) buffer.insertAfter($root);

        (注意:在您的示例中,缓冲区已经是jquery对象,您不需要为insertAfter重新选择它)

        好的,这样做确实更快。不幸的是,我不能这样做,因为pages[pindex]包含带有.data和事件处理程序的jQuery对象。但不管怎样+1,这样做确实更快。不幸的是,我不能这样做,因为pages[pindex]包含带有.data和事件处理程序的jQuery对象。但是无论如何+1。