Re: [問題] jQuery each --> Native Loop

看板Ajax作者 (System hacked)時間11年前 (2012/08/06 00:13), 編輯推噓2(2011)
留言13則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《DRLai (蘇打)》之銘言: : <script> : $(document).ready(function(){ : $("#test").children("div").each(function(){ : $("#debug").append("I got "+$(this).attr("id")+"<br/>"); : }); : }); 如果 #test 下面很多 div,要快的話就是先累積再一次插入: $(function(){ var t = ''; $('#test > div').each(function(){ t += 'I got ' + $(this).attr('id') + '<br/>'; }); $('#debug').append(t); }); 這樣可以節省 browser redraw 時間。 另外還有 string concat 的問題 (不知道現在新的 browser 還需不需要在意這個), 可以用 array + join 處理: $(function(){ var t = []; $('#test > div').each(function(){ t.push('I got ' + $(this).attr('id') + '<br/>'); }); $('#debug').append(t.join('')); }); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.242.135.97 ※ 編輯: DarkKiller 來自: 210.242.135.97 (08/06 00:14)

08/06 08:22, , 1F
@DK 最近幾次的測試報告看起來 concat 的問題好很多了
08/06 08:22, 1F

08/06 08:22, , 2F
甚至還有直接加起來比 array join 還快的案例,
08/06 08:22, 2F

08/06 08:23, , 3F
真不知道底層怎麼做的。XD
08/06 08:23, 3F

08/06 08:23, , 4F
stackoverflow 上有相關討論
08/06 08:23, 4F

08/06 09:05, , 6F
concat 比較快應該有一陣子了, 只是商業上多半會想支援
08/06 09:05, 6F

08/06 09:06, , 7F
IE6, 它又最慢, 所以會用 (IE6 中較快的) array join
08/06 09:06, 7F

08/06 09:07, , 8F
逐漸擺脫 IE6 陰影以後用 concat 的確會是比較好的選擇
08/06 09:07, 8F

08/06 15:27, , 9F
卡就卡在,很難說是 test-case 的問題(有可能跑到最佳情況
08/06 15:27, 9F

08/06 15:27, , 10F
還是常態來講都是這樣,這年頭 browser optimize 到很難作
08/06 15:27, 10F

08/06 15:28, , 11F
perf benchmark。
08/06 15:28, 11F

08/07 12:09, , 12F
loop的時間不會差太多 差是在append的方法
08/07 12:09, 12F

08/07 12:09, , 13F
文章代碼(AID): #1G7fkw8p (Ajax)
文章代碼(AID): #1G7fkw8p (Ajax)