【问题标题】:Jquery slidetoggle Show Hide One div at a timeJquery slidetoggle Show Hide 一次一个 div
【发布时间】:2015-09-04 11:28:08
【问题描述】:

我在创建一次打开一个 div 的 Jquery 切换时遇到问题。

我希望当我点击div (show) 时只显示一个内容。在这里,它们同时打开。

$(document).ready(function(){
    var $content = $(".content").hide();
        $(".toggle").on("click", function(e){
            $(this).toggleClass("expanded");
            $content.slideToggle();
        });
});    

JS Fiddle

另外:如何添加选项以便在打开新的 div 时隐藏打开的 div,但即使您没有打开新的div,也可以选择隐藏当前打开的 div点击"hide"文字)

【问题讨论】:

    标签: javascript jquery toggle show-hide slidetoggle


    【解决方案1】:

    您可以通过多种方式做到这一点。使用您当前的 html 标记,您可以使用 jQuery's Next Function

    $(".toggle").on("click", function(e){
        $(this).toggleClass("expanded");
        $(this).next().slideToggle();
    });
    

    或者您可以将切换和内容包装在一个 div 中,并使用 parentfind 函数。

    HTML

    <div class="wrapper">
        <div class="toggle"></div>
        <div class="content">Lorem Ipsum </div>
    </div>
    

    JavaScript

    $(".toggle").on("click", function(e){
        $(this).toggleClass("expanded");
        $(this).parent().find('.content').slideToggle();
    });
    

    如果您在切换其中一个时希望所有其他.contentslideUp,只需选择所有.content div 并使用jQuery's Not Function 排除您刚刚切换的div。

    $(".toggle").on("click", function(e){
        var target = $(this).parent().find('.content');
        $(this).toggleClass("expanded");
        target.slideToggle();
        $('.content').not( target ).slideUp();
    });
    

    【讨论】:

    • 太好了,非常感谢。效果很好。打开一个新的 div 后添加自动关闭 div 的选项怎么样?我需要为此输入什么代码?谢谢。
    • 您如何更改“切换”名称并返回“显示”。因为使用此代码,如果内容打开并且切换为“隐藏”,如果我单击另一个切换,内容将向上滑动,但切换名称“隐藏”将保留。非常感谢您。你真的很有帮助。
    • 使用not 函数。喜欢这个$('.toggle').not( $(this) ).removeClass('expanded');。这将从所有未被点击的.toggle 元素中删除扩展类。
    猜你喜欢
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2015-11-05
    相关资源
    最近更新 更多