【问题标题】:jQuery Toggle hide when clicked again再次单击时 jQuery Toggle 隐藏
【发布时间】:2015-12-26 00:47:13
【问题描述】:

编辑:如果打开另一个信号,我确实希望隐藏其他信号。

我正在为我的论坛签名设置一个切换,我得到了我想要的切换,但是当你再次点击切换时,我不知道如何让它隐藏。

function toggleSig(divId) {
   $('.forum_signature').each(function(index) {
      if ($(this).attr("id") == divId) {
          $(this).show(200);
      }
      else {
          $(this).hide(600);
      }
   });
}

https://jsfiddle.net/4yg83kru/1/

关于如何在再次单击时隐藏切换的任何想法? (我是 JS/jQuery 方面的新手)

【问题讨论】:

    标签: jquery toggle


    【解决方案1】:

    您可以将显示方法更改为切换,因此单击的“id”将切换,另一个将在可见时隐藏

    function toggleSig(divId) {
        $('.forum_signature').each(function(index) {
            if ($(this).attr("id") == divId) {
                $(this).toggle(200);
            }
            else {
                $(this).hide(600);
            }
        });
    }
    

    https://jsfiddle.net/4yg83kru/2/

    【讨论】:

    • 完美!正是我想要的,这么小的编辑应该想到的啊,谢谢。
    【解决方案2】:

    传入项目的 id 并循环遍历所有项目并做某事看起来有点脏。你可以让你的代码更通用一点。给你的锚标签一个 CSS 类。

    <a class="myA">Toggle Signature</a>
    <div id="1" class="forum_signature" style="display:none;">
        Signature
    </div>
    <a class="myA">Toggle Signature</a>
    <div id="2" class="forum_signature" style="display:none;">
        Signature 2
    </div>
    

    现在 javascript 来处理隐藏和显示

    $(function(){
    
      $(".myA").click(function(e){
         e.preventDefault();
    
         var c= $(".forum_signature:visible"); //Get currently visible one       
         $(this).next().toggle(); //Show the current one
         c.hide(); // Hide the previously visible one        
      });  
    
    });
    

    Here 是一个有效的 jsbin 示例

    【讨论】:

    • 啊,这也很棒
    【解决方案3】:

    您可以使用切换事件:

    function toggleSig(divId) {
        $('.forum_signature').each(function(index) {
            if ($(this).attr("id") == divId) {
                $(this).toggle(200);
            }
    
        });
    }
    

    注意:这不是唯一的方法,但在我看来,这对你来说是一种简单的方法。

    这个只打开点击的那个:

    function toggleSig(divId) {
       $('.forum_signature').hide()
        $('.forum_signature').each(function(index) {
            if ($(this).attr("id") == divId) {
                $(this).show(200);
            }
    
        });
    }
    

    你可以在这里查看:

    https://jsfiddle.net/5xkvew4k/

    【讨论】:

    • 是的,它很好用,但问题是我想保留打开的并隐藏其余的
    • 这不是你的问题,所以我没有这样做。但这很容易做到。我会试着为你做一个小提琴。
    • 我按照您在评论中的要求为我的答案添加了更新。我希望这将有所帮助。干杯:)
    猜你喜欢
    • 2018-09-29
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多