作者grence (dalalida)
看板Ajax
标题Re: [问题] jQuery在IE上
时间Sat Dec 1 03:43:28 2012
※ 引述《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)
1F:→ nenpow:如果像是$("#frm_id input[name=abc]") 应该会更快 12/01 10:54
2F:→ nenpow:当然前提是画面有很多input 分布在不同tag里 12/01 10:56