jQuery的.toggle()方法在IE中不适用于TR元素

25

我正在使用jQuery的toggle()来显示/隐藏表格行。在FireFox中它运作正常,但在IE 8中却无法工作。

.show()/.hide()则可以正常工作。

slideToggle()在IE中也不起作用——它会短暂地显示一下,然后又消失了。在FireFox中可以正常工作。

我的HTML代码看起来类似于这样

<a id="readOnlyRowsToggle">Click</a>  
<table>  
  <tr><td>row</td></tr>  
  <tr><td>row</td></tr>  
  <tr class="readOnlyRow"><td>row</td></tr>  
  <tr class="readOnlyRow"><td>row</td></tr>  
  <tr class="readOnlyRow"><td>row</td></tr>  
</table>

JavaScript

$(document).ready(function() {  
    $(".readOnlyRow").hide();  
    $("#readOnlyRowsToggle").click(function() {  
        $(".readOnlyRow").toggle();  
    });  
});  

IE8 中的 TD 也存在同样的问题。 - Cros
13个回答

0

我注意到如果你使用了jquery mobile,那么在iphone上切换可能无法正常工作。如果你在jquery mobile加载之前运行toggle(.ready),那么就没问题。


-1

我也注意到了。很可能你需要在每个td上切换一个类。我还没有尝试过这个解决方案,所以告诉我一声!

对于其他人- 这是特定于IE8的,而不是6或7。

编辑

显然你没有尝试过这个,因为-1,但是我刚刚用良好的结果尝试了(在我的情况下)。

CSS

tr.hideme td { display: none }

JS

$("#view-advanced").click(function() {
    $("tr.hideme td").toggle();
    return false;
});

将toggle()放在td上会产生不同的结果:它会切换一些单元格,而其他单元格则不会,但是它在切换哪些/如何切换方面并不一致。我怀疑在td上放置它时可能会出现万圣节问题。有趣的是,在FF上它运行良好,并且show()/hide()在IE8和FF上的td上也正常工作。 - Robert MacLean
在我的第一次测试中,我实际上将类从tr中删除并将其放在了TD上,这就是我得到奇怪结果的地方。现在我已经尝试按照您在编辑中建议的方式进行更改(不包括CSS)(即更改选择器),但该选择器在FF或IE8中均无法工作。 我还尝试了以下选择器组合,但它们也不起作用: tr.readOnlyRow > td .readOnlyRow > td .readOnlyRow td然后我尝试将隐藏函数更改为CSS,并最终遇到了与之前相同的奇怪问题。 - Robert MacLean
不确定为什么你的不起作用——在IE6-8、FF3和Safari中,我的都运行正常。 - ScottE
你们每个人使用的是哪个版本的jQuery? - Cᴏʀʏ

-1
因为您让他们点击了一个 <a>,所以需要该函数返回 false。

-1:根本就不是那样。我可以在点击事件中放任何东西,只是开关不起作用。 - Robert MacLean

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接