【问题标题】:How to toggle hide/show of all elements with same class name on button click如何在按钮单击时切换隐藏/显示具有相同类名的所有元素
【发布时间】:2011-12-08 04:23:07
【问题描述】:

我正在尝试在具有相同类的所有 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();两者都有效,但切换不会。我做错了什么?

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

作为.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();

}   

【讨论】:

  • 我使用了你的第二个建议,效果很好,谢谢!
【解决方案2】:

如果show() 有效,hide() 有效,但 toggle() 无效,我只看到一种解释:您的事件被触发两次(或任何偶数)。

【讨论】:

  • 这就是警报的用途——它只会出现一次。不过是个好地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多