【问题标题】:setting .height() with nested jquery taking forever in IE but not chrome设置 .height() 嵌套 jquery 在 IE 中永久使用,但不是 chrome
【发布时间】:2013-01-17 22:05:09
【问题描述】:

我有一些在 chrome 中运行的 jquery,但 IE 一直卡在它上面。我有一个带有一些静态列的表,这些列通过绝对定位是静态的。我想确保它们与父行垂直扩展,所以我有这段代码来扩展它们。它有效,但在 IE 中需要 FOREVER。 我可以做些什么来提高 IE 的性能?

    $("#grdSchedule tr").each(function(i){
        $(this).find(".stickyCol").height($(this).height());
    });

编辑:.height() 是问题

这是我迄今为止尝试过的,但它根本没有多大帮助。

    var stickyCols = GetStickyColumnCount();

    $("#grdSchedule > tbody > tr").each(function(i) {
        thisRow = $(this);
        thisRow.children().slice(0, stickyCols).height(thisRow.height());
        //thisRow.children(".stickyCol").height(thisRow.height());
    });

似乎每次调用 height() 都是在 IE 中拖累它。我将提出一个新问题,也许是一些 css 帮助,所以我不需要首先运行这个脚本。但是,如果有人可以在 IE 中添加任何东西来加快速度,那就太棒了!

如果有人想知道,对于我的大而丑陋的生产数据网格,chrome 运行它大约需要 2.5 秒,而 IE 大约需要 20 秒。

我想也许我应该尝试用 css 而不是 javascript 来解决这个问题

【问题讨论】:

  • 打算尝试一个标准的 javascript 循环,但我讨厌在我的页面上有所有额外的代码
  • 如果.stickyCol 是直接子代,则改用.children()。并且,缓存$(this)。另外你应该举一个例子fiddle,无论如何这种依赖于浏览器的优化最好尝试一下。到目前为止,我们还不知道您的数据大小。我可以有一个 <table> 有一百万行或一个只有 2 行
  • 是的,这个表的数据很疯狂,需要一段时间才能做出相关的小提琴。想象一个日程表,左边有一堆粘性员工列,右边每个单元格中有一堆疯狂的日程安排详细信息 html,其中每个非粘性列是一个日期。哦,是的,还有数百名员工……一张充满了很多元素的大桌子。如果建议的解决方案不能解决我的问题,今天晚些时候我会做一个小提琴
  • 它的高度!设置高度的嵌套查询在 IE 中不能很好地发挥作用......这不是找到问题所在的元素......我想我可能需要提出一个新问题
  • 你考虑过使用 $.css();方法而不是 $.height()?我不知道,但它可能会更快。类似:thisRow.find(stickyCols).css('height', thisRow.css('height'));。编辑:另外,$.find() 可以相当快,而不是使用孩子或切片(这里有一些有趣的指标:stackoverflow.com/a/8434662/846480

标签: jquery performance cross-browser


【解决方案1】:

试试这个,

$("#grdSchedule tr .stickyCol").height(function(i,height){
    return $(this).closest('tr').height();
});

【讨论】:

    猜你喜欢
    • 2017-11-19
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多