2011-12-07 28 views
3

我正试图在所有具有相同类的div上切换隐藏/显示。我在我的页面上有几个表格,每行都有多个字符串。我只显示第一个字符串,并将其余字符串隐藏在style ='display:none;'隐藏的div中。如何在按钮单击上切换具有相同类名的所有元素的隐藏/显示

我只是不能得到这个工作。有什么建议么? HTML的

例如:

<a href=# onClick='toggleHist(\"".$zone."\");return false;'>Additional Info</a> 

    <table> 
    <tr> 
    <td>asdfasdf <div class='zone_1' style='display:none;'>asdfasdf asdfasdf asdfasdf </div></td> 
    </tr> 
    <tr> 
    <td> 
    asdfasdf<div class='zone_1' style='display:none;'> asdfasdf asdfasdf asfasdf </div> 
    </td> 
    </tr> 
    <tr> 
    <td> 
    adfasdf<div class='zone_1' style='display:none;'> asdfasdf asdfasdf asdfasdf </div> 
    </td> 
    </tr> 
    </table> 

我的javascript:

function toggleHist(zone_name){ 
    //alert(zone_name); 
    $('.'+zone_name).toggle(); 

} 

使用.show();和.hide();这两个工作,但切换不会。我究竟做错了什么?

+0

你的意思是'.toggleClass()'? http://api.jquery.com/toggleClass/ –

+0

您正在使用哪个版本的jQuery? – mason81

回答

2

作为替代.toggle()

可以创建包含display: none一个CSS类,并使用.toggleClass()切换的元素类。

.DisplayNone 
{ 
    display: none; 
} 


function toggleHist(zone_name){ 

    $('.'+zone_name).toggleClass('DisplayNone'); 

}  

或者您可以通过检查以查看元素是否可见来使用显示和隐藏。

function toggleHist(zone_name){  

    if ($('.'+zone_name).is(":visible")) 
     $('.'+zone_name).hide();   
    else 
     $('.'+zone_name).show(); 

} 
+1

toggle()存在。 http://api.jquery.com/toggle/ – buddhabrot

+0

我也这么认为,但我的谷歌失败 –

+0

我用你的第二个建议,它完美的作品,谢谢! – user797963

2

如果show()作品,hide()作品,但toggle()不,我看到的只有一个解释:你的事件被触发两次(或任何偶数量)。

+0

这就是警报的原因 - 它只能通过一次。虽然好点。 – user797963

相关问题