【问题标题】:Html table does not redraw after adding to its DOM ie8Html 表在添加到其 DOM 后不重绘 ie8
【发布时间】:2011-04-15 15:51:32
【问题描述】:

当我使用 jquery 向其添加输入时,由于不重绘表格,IE 对我的大表格产生了误解。当我向上或向下滚动表格时,它会强制重绘/更新,否则它不会正确呈现输入。

<div style="overflow: auto;">
   <table>
       <tbody>
           /// lots of rows
       </tbody>
   </table>
</div>

和 javascript sn-p :

input = $(document.createElement("input"));
input.attr("type", "text");
input.attr("value", $.trim(div.html())); 
TD.prepend(input);

这在 Firefox 中运行良好,但拒绝在 IE8 中运行。一种解决方法是强制重绘,但我似乎找不到办法做到这一点。

我认为 ie8 在 quirks 模式下渲染,但在 ie8 或 quirks 模式下都不起作用。

[编辑]

function forceIERedraw() {
    if ($.browser.msie) {
        obj = getThing();
        obj.scrollTop = obj.scrollTop - 1;
        obj.scrollTop = obj.scrollTop + 1;
    }
}

这可行,但当然会使屏幕轻微抖动。骇人听闻,但至少你可以看到我添加到 dom 中的东西。

【问题讨论】:

    标签: javascript html internet-explorer dom


    【解决方案1】:

    今天我遇到了一些类似的问题,通过再次重写div的整个html来解决它。后来我在这里找到了你的问题......

    假设您的 div 有一个 id stupiddiv
    现在你做这样的事情:
    $('#stupiddiv').html($('#stupiddiv').html());
    在附加表格和所有内容之后...如果您有小表格,那将可以工作,但是对于大表格,我想这会影响性能...

    【讨论】:

      【解决方案2】:

      原来问题是特定于我正在工作的网站(那时已经有 10 年了。)并以 ie quirks 模式呈现。基本上整个事情都是一团糟,这是页面上各种其他问题的副作用。

      【讨论】:

      • 这是“回答”此类问题的正确方法吗?
      • 在这种情况下,没有原因我的桌子仍然坏了,你的回答对我没有帮助:P
      【解决方案3】:

      隐藏和显示身体通常可以解决像你这样的问题:

      input = $(document.createElement("input"));
      input.attr("type", "text");
      input.attr("value", $.trim(div.html())); 
      TD.prepend(input);
      document.body.style.display = 'none';
      document.body.style.display = 'block';
      

      【讨论】:

      • 它对我有用:IE7,doctype html 4.01 过渡(所以,怪癖模式)。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 2016-04-06
      • 2017-01-08
      • 2018-06-04
      • 1970-01-01
      相关资源
      最近更新 更多