Re: [問題] jQuery在IE上

看板Ajax作者 (dalalida)時間12年前 (2012/12/01 03:43), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《a613204 (胖胖)》之銘言: : ※ [本文轉錄自 Web_Design 看板 #1Gk4MDks ] : 作者: a613204 (胖胖) 看板: Web_Design : 標題: [問題] jQuery在IE上 : 時間: Fri Nov 30 13:35:07 2012 : 想請教一個問題 : 我有段jQuery的code在 chrome, firefox, IE8, IE9 : 速度都滿快的 唯獨在IE6, IE7上面超卡的 : 程式碼 : $("input [name^='abc']").removeAttr('disabled') ^確定這裡有空格嗎? : 猜想因為是使用 ^= 所以會整個掃過一遍 導致效能比較差 使用 jQuery attribute selector基本上就是全掃 除了新一點的瀏覽器支援 querySelectorAll可能會快一點 name也許可以套用 document.getElementsByName 但是你要 ^=大概就沒機會了 如果要縮小 selector範圍, 用 $("input [name^='abc']", "parentElement selector") 原文一樓的推文感覺是增加更多判斷條件,可能會更慢 以上針對 selector. 但我覺得慢的原因是後面的 removeAttr('disabled')會讓瀏覽器重畫 有興趣請google "browser repaint" 而舊 IE重畫的時間又慢個十幾倍以上 : 加上因為jQuery的code在IE上面的效能本來就不好 IE的 JS本來就比較慢,人不是 jQuery殺的 : 想請問有沒有什麼更快的寫法? 可以嚐試在 removeAttr之前把整個 parent隱藏,remove完之後再顯示; 或是畫一個足夠大的 loading div蓋住整個畫面 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.132.224 ※ 編輯: grence 來自: 123.193.132.224 (12/01 03:43)

12/01 10:54, , 1F
如果像是$("#frm_id input[name=abc]") 應該會更快
12/01 10:54, 1F

12/01 10:56, , 2F
當然前提是畫面有很多input 分佈在不同tag裡
12/01 10:56, 2F
文章代碼(AID): #1GkGnYYK (Ajax)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
文章代碼(AID): #1GkGnYYK (Ajax)