代码之家  ›  专栏  ›  技术社区  ›  Bryan Denny

关于jQuery性能和DOM的问题:为什么一种方法比另一种方法快?

  •  0
  • Bryan Denny  · 技术社区  · 17 年前

    我在看一些jQuery性能技巧,偶然发现了一个引起我兴趣的技巧。

    <html>
    <head>
    </head>
    <body>
    <select id ="myList">
    
    
    </select>
    <div id ="myList2">
    
    
    </div>
    <script language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script>
    
    <script type="text/javascript">
    $(document).ready(function()
    {
        console.time('test');
        var myList = $('#myList');
        var myListItems = '';
    
        for (i = 0; i < 1000; i++) {
            myListItems += '<option>This is list item ' + i + '</option>';
        }
    
        myList.html(myListItems);
        console.timeEnd('test');
    
        console.time('test2');
        var myList = $('#myList2');
        var myListItems = '<select  >';
    
        for (i = 0; i < 1000; i++) {
            myListItems += '<option>This is list item ' + i + '</option>';
        }
    
        myListItems += '</select>';
        myList.html(myListItems);
        console.timeEnd('test2');
    
    }
    );
    </script>
    </body>
    </html>
    

    为什么第二种测试方法比第一种快(大约快4倍)?

    3 回复  |  直到 17 年前
        1
  •  1
  •   Bryan Denny    17 年前

    好吧,我想我可能会得到它。

    使用第一个选项,我们将1000个DOM对象添加到一个DOM对象中。

    我的想法正确吗?把一个装有1000颗弹珠的袋子装进盒子里比把1000颗弹珠装进袋子里容易吗?

        2
  •  0
  •   Spencer Ruport    17 年前

        3
  •  0
  •   user152108    17 年前

    你说得对。