比如在一个div里面添加元素, 不用jquery的话,为了提高效率,肯定是先要创建文档碎片 然后让div再appendChild,现在用了jquery该怎么办啊.
我用这个 var $frag = $(document.createDocumentFragment()); 
这个不管用啊...

解决方案 »

  1.   

    直接用原生态的JS。或者
    2、如果需要给DOM中添加新的元素,避免创建一个元素添加一次。应尽量只添加一次    // bad code  
        $.each(aArray, function(i, item) {  
            var newListItem = '<li>' + item + '</li>';  
            $('ul').append(newListItem); // 这里每append一次都将会重载DOM  
        });  
        // better code  
        var frag = document.createDocumentFragment(); // 创建文档碎片  
        $.each(aArray, function(i, item) {  
            var newListItem = '<li>' + item + '</li>';  
            frag.appendChild(newListItem); // 这里不会刷新DOM  
        });  
        $('ul').appendChild(frag); // 添加新元素,此时重载DOM一次  
        // or do this  
        var sHtml = '';  
        $.each(aArray, function(i, item) {  
            html += '<li>' + item + '</li>'; // 构造需要添加元素的字符串  
        });  
        $('ul').html(sHtml); // 使用jQuery的$.fn.html()方法添加改字符串  
    http://blog.csdn.net/oxcow/archive/2011/04/09/6311550.aspx
      

  2.   

    其实jq也是使用原生的JS,不要全想用jq,
    另外,使用拼接字符串的方法把dom节点拼成一个字符串使用$.html()方法也是可以的
      

  3.   

    啊 不对啊 用那种方法以后 我是可以添加元素了 但是没有append之前它不是jquery对象, 我没法绑定事件啊...事件也得用原生的啊.....jquery这点设计的可不太好啊.....
      

  4.   

    jquery的append方法在内部已经执行过CreateDocumentFragment方法了,是先写入碎片的