jQuery .toggle()在IE中不使用TRs

前端之家收集整理的这篇文章主要介绍了jQuery .toggle()在IE中不使用TRs前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用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有点慌张。无论哪种方式,这固定了我的问题。

猜你在找的jQuery相关文章