我使用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(); }); });
解决方法
我经历过同样的错误在表中的tr。我做了一些调查使用IE8的脚本调试工具。
首先我尝试使用toggle:
$(classname).toggle();
这在FF,但不是IE8。
我然后尝试这:
if($(classname).is(":visible"))//IE8 always evaluates to true. $(classname).hide(); else $(classname).show();
当我调试这个代码,jquery总是认为它是可见的。所以它会关闭它,但然后它永远不会打开它回来。
然后我把它改为:
var elem = $(classname)[0]; if(elem.style.display == 'none') $(classname).show(); else { $(classname).hide(); }
这工作正常。 jQuery的得到了a bug在它或者也许我的html有点慌张。无论哪种方式,这固定了我的问题。