我试图使用设置溢出和固定宽度的策略来阻止 div 中的字符串扩展到其可变大小的父 div 的大小之外。我在页面上有大约 4400 个 dom 元素(不能减少,通常可以更多),但只需要更改大约 100-300 个。当然,在 FF/Webkit 中这不是问题,它可以在不到一秒的时间内完成,但 IE 非常慢,超过 7 秒。
我已经通过使用一组预先确定的 id 元素来解决有问题的标签,从而消除了任何 dom 遍历。是否有我遗漏的东西或一些替代技巧可以在更短的时间内为 IE 执行此操作?
for (id in ids) {
jq("#" + ids[id] + "_name").css({"overflow": "hidden",
'width': jq("#" + ids[id]).innerWidth() - 1
});
}
最佳答案
好吧,在深入到 DOM 的本质并且仍然没有消除任何速度的情况下,我已经选择了缓解问题的替代方法,因此它对用户来说不是什么问题(可能是 IE9将使 MS 免于这种尴尬!)。我看了this blog entry by Nick Fitzgerald它显示了克服该问题的技术。所以在这里,使用 Nick 的模式,是我最终的解决方案(只是处理 IE 的部分,我保留了非 IE 版本):
yieldingEach(ids, function(namebox) {
var elemName = document.getElementById(namebox + '_name');
if (elemName) {
var elem = document.getElementById(namebox);
elemName.style.width = (elem.scrollWidth - 4) + 'px';
}
});
关于javascript - 优化 jquery 循环以设置宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5185353/