【问题标题】:Toggle element visibility with jQuery!使用 jQuery 切换元素可见性!
【发布时间】:2009-06-25 11:00:48
【问题描述】:

我有以下标记:

<div class="header">Text</div>
<div class="hiddenArea">sdsada</div>

<div class="header">Text2</div>
<div class="hiddenArea">sdsada</div>

以及下面的 jQuery:

$('.header').click(function() {
        var t = $(this).next('.hiddenArea').slideToggle();
    });

当 hiddenArea 被显示时,我想隐藏另一个 hiddenArea(如果它是可见的)? 我想这样做,以便在需要时添加其他标题和 hiddenAreas。

更新:

谢谢伙计们,最终这样做了:

$('#messages .header').click(function() {
  if (!$(this).next().is(':visible')) {
    $('.hiddenArea').slideToggle();
  }
});

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    假设您在呈现表单时有一个 hiddenArea 可见,这将起作用。 另请注意,您不需要在 next 方法中使用过滤器,因为 next 只会给您下一个兄弟。

    $('.header').click(function() {
        var $el = $(this);
        if ( ! $el.next().is('visible') ){
           $('div.hiddenArea:visible').slideUp( function(){
               var t = $el.next().slideDown();
           });
        }
    });
    

    【讨论】:

    • 这很好用 redsquare 谢谢,但两个 hiddenAreas 最初都不可见!?
    • 它只需要一开始就可见!
    • 当你点击下一个 hiddenArea 已经可见的标题时,hiddenArea 被隐藏然后显示,不是很光滑,如果适当的 hiddenArea 已经可见,我希望什么都不做
    • 这是对需求的最新突破!将编辑以上内容
    【解决方案2】:

    谢谢伙计们,最终这样做了:

    $('#messages .header').click(function() {
            if (!$(this).next().is(':visible')) {
                $('.hiddenArea').slideToggle();
            }
        });
    

    【讨论】:

    • 我从不相信任何切换开关,因为它们可能会因快速双击等而失去同步。无论如何,你把它整理好了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2014-03-02
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    相关资源
    最近更新 更多