.hide()、.show()、表格和 IE
Posted
技术标签:
【中文标题】.hide()、.show()、表格和 IE【英文标题】:.hide(), .show(), tables, and IE 【发布时间】:2010-09-16 14:42:17 【问题描述】:我有一些嵌套表,我想在单击其中一个***行时隐藏/显示它们。
简而言之,标记是:
现在,我正在使用一些 jQuery 来定位第一个表格行中的链接。单击该链接时,它会下拉一些数据,将其格式化为一组表格行,并将其附加到内部表格中。然后它将 .show() 应用于表格。 (这都是通过 id/class 定位完成的。为简洁起见,我将它们排除在示例之外)。
这在 Firefox 中运行良好。点击链接,数据被加载,主表“展开”,辅助表全部填满。
问题是——Internet Explorer 给了我手指。据我所知,数据被附加到内部表中。问题是 .show() 似乎没有做任何有用的事情。更烦人的是,我有一个页面,它有这个功能,在这两种情况下都能很好地工作——唯一的区别是两件事:
在工作中,内表被包裹在一个 div 中。我什至尝试在这个例子中将我的表格包装在一个 div 中,但没有成功。 在那个不工作的地方,我加载了一个额外的 jQuery 插件——但我已经删除了这个插件并尝试了没有它的页面,它仍然无法显示内部表格。
我尝试将 .show 附加到父 tr、父 td 和表本身,但没有成功。我一定错过了一些非常简单的东西,因为据我所知这应该可以工作。
以前有没有人遇到过这样的事情?
【问题讨论】:
【参考方案1】:请记住,
在 IE 中存在大量与从 Javascript 修改表格内容相关的错误。很多情况下,IE(包括IE7)甚至会崩溃。
我最近遇到了这个问题,我对我想出的解决方法一无所知。让我回顾一下我的日志,看看我能找到什么。
好的,我找到了我遇到的案例。
我正在做类似的事情。我有一个表,我试图通过 Javascript 添加一个带有链接的 <td
> 标记,这导致 IE7 中出现内存异常。
最后,我能想出解决它的唯一方法是在 Javascript 中重建整个 <table
>,而不是尝试将内容插入现有的。
为了澄清,重建我的意思是创建一个包含表格 HTML 的字符串并将其添加到 div 的 innerHTML。我没有使用 DOM 函数来创建表。
【讨论】:
我读到IE会在修改表时泄漏内存(大概是因为它没有释放删除的以上是关于.hide()、.show()、表格和 IE的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Angular ui 路由器 ng-hide 和 ng-show 视图?
兼容ie6及以上和firefox等标准浏览器的表格行滑过时背景色切换的效果