javascript - 优化 jquery 循环以设置宽度

标签 javascript jquery optimization width overflow

我试图使用设置溢出和固定宽度的策略来阻止 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/

相关文章:

javascript - 在 3D 中渲染正方形

javascript - 使用 javascript 调用 Rails Controller 方法

javascript - 当我在背景图像 div 上应用叠加颜色时,内容会被禁用

javascript - 单击外部事件 div 以停用功能

javascript - JavaScript 脚本标记中的绝对路径

javascript - http请求js和css文件

javascript - 文本闪烁的淡入和淡出效果在 IE8 上不起作用?

c++ - 在 C++ 中优化指针拷贝

c++ - 我如何在 std::atomic<T> 上实现一个简单的自旋锁,以便编译器不会优化它?

optimization - 在 MarkLogic 中优化 SPARQL 查询