jQuery的show()方法是否适用于IE中的表?

时间:2009-10-02 01:59:43

标签: jquery internet-explorer

我有一个表,其中一些行以隐藏(display:none)开头,我正在使用jQuery来显示它们。我从Firebug收集到jQuery检测到它们是表行并将它们设置为display:table-row而不是阻塞。

然而,IE6(我认为也是7)不支持table-row,那么jQuery是否会为这些浏览器做些不同的事情?

另一个问题似乎是使用show()以外的任何功能导致Linux和Firefox中的100%CPU,并且在我收到有关慢速脚本的警告之前它们会变得无法响应。在Opera中,行一个接一个地出现得很慢。有没有办法让行像普通<div>那样顺畅地显示?

2 个答案:

答案 0 :(得分:2)

不幸的是,这是不可能的。原因是表格行没有布局。它严格地说是结构元素而不是显示元素。 table-data既不是显示元素,也是结构元素。但是你可以尝试这个。这将隐藏表数据的内容,有效地折叠表行。

// show
$("table tr.show").find("td *").show();
// hide
$("table tr.hide").find("td *").hide();

答案 1 :(得分:0)

这个解决方案对我有用(假设TR设置了“display:none”):

  

$( “#table_row”)的CSS( “显示”, “表列”);

     

如果($( “#table_row”)。CSS( “显示器”)== “无”)

     

$( “#table_row”)的CSS( “显示”, “块”);

IE无法识别表行属性,因此它不会更改显示值,而是保留以前具有的任何值(在本例中为“none”)。因此,您所要做的就是测试显示是否更改为表格行(FF&amp; Chrome),还是保留其先前的值(IE)。

希望这会有所帮助。