.hide(),. show(),表和IE

时间:2008-10-10 20:14:23

标签: jquery internet-explorer

我有一些嵌套表,我想在点击其中一个顶级行时隐藏/显示。

简而言之,标记是:

  <table>
    <tr>
      <td>stuff</td>
      .... more tds here
    </tr>
    <tr>
      <td colspan=some_number>
        <table>
        </table>
      </td>
    </tr>
  </table>

现在,我正在使用一些jQuery来定位第一个表行中的链接。单击该链接时,它会向下拉一些数据,将其格式化为一堆表行,并将其附加到表中。然后它将.show()应用于表。 (这都是通过id / class targeting完成的。为了简洁,我将它们从样本中删除了。)

这在firefox中运行得非常好。单击链接,数据加载,主表“扩展”,辅助表都很好并填写。

问题是 - Internet Explorer正在给我指责。据我所知,数据被附加到内部表。问题是.show()似乎没有做任何有用的事情。为了让事情变得更烦人,我有一个具有这种功能的页面在两者中都非常出色 - 唯一的区别是两件事:

在正在工作的那个中,内部表被包裹在div中。我甚至试图在这个例子中将我的表包装在div中但没有成功。 在没有工作的那个,我有一个额外的jQuery插件加载 - 但我删除了这个插件并尝试了没有它的页面,它仍然无法显示内部表。

我尝试将.show附加到父tr,父td和表本身但没有成功。我必须遗漏一些非常简单的东西,因为尽可能接近我应该这样做。

有没有人遇到过这样的事情?

2 个答案:

答案 0 :(得分:6)

请记住&lt; table&gt;的innerHTML IE中的元素是只读(6肯定,不确定7)。既然如此,您是否明确添加&lt; tbody&gt;元件?如果没有,请尝试添加一个并将行添加到body元素而不是表元素。

<table>
  <tbody>
    <!-- Add stuff here... -->
  </tbody>
</table>

Microsoft信息(排序):PRB: Error Setting table.innerHTML in Internet Explorer注意:它说这是“按设计”。

答案 1 :(得分:1)

IE中有一堆错误与从Javascript修改表的内容有关。在很多情况下,IE(包括IE7)甚至会崩溃。

我最近遇到了这个问题,而且我在解决这个问题上的消息。让我回顾一下我的日志,看看我能找到什么。


好的,我找到了遇到的情况。

我做了类似的事情。我有一张桌子,我正在尝试添加<td&gt;通过Javascript标记其中的链接,这导致IE7中出现内存异常。

最后,我唯一可以解决的问题是重建整个<table&gt;在Javascript中而不是尝试将内容插入到现有内容中。

为了澄清,通过重建,我的意思是创建一个包含表格HTML的字符串,并将其添加到div的innerHTML中。我没有使用DOM函数来创建表。