JQuery切换点击效果(demo:bootstrap折叠模块切换至可同时展开)

前几天在用BootStrap的时候用到了其中的一个“折叠”模块,就是这个

快写(抄)完的时候突然发现一个问题,如果阅读者希望能够同时展开所有折叠框?如果一会又想切回来每次只一个?

先来看一下用比较呆的方法做的(jQuery)

<div>
        <h3>标题一</h3>
        <p>展示文本一</p>
    </div>
    <div>
        <h3>标题二</h3>
        <p>展示文本二</p>
    </div>
    <div>
        <h3>标题三</h3>
        <p>展示文本三</p>
    </div>
    <button id="toggleShowing" data-show="all">同时展示多个框体</button>

 

<script>
    $(function(){
        //siblings()不能跨div了?
        function showOne() {
           $(this).next("p").slideToggle("fast").parent().siblings().find("p").slideUp("fast");  
        };
        function showAll() {
            $(this).next("p").slideToggle("fast");
        };

        $("h3").bind("click",showOne);
        $("#toggleShowing").click(function () { 
            if($(this).data("show") == "all"){
                $("h3").unbind("click",showOne);
                $("h3").bind("click",showAll);
                $(this).data("show","one");    
                console.log($(this).data("show"));           
            }else{
                $("h3").unbind("click",showAll);
                $("h3").bind("click",showOne);
                $(this).data("show","all");    
            }
        })

    })
</script>

(ps:使用sibling()方法的时候很诡异的发现不能跨div了?也就是说只能兄弟不能堂哥堂弟了?明天再专门研究一哈)

 

 

这个方法有些呆,但是能正确的实现效果

 

试一下用BS本身自带的钩子能不能(直接在菜鸟教程上修改):

 网址:https://www.runoob.com/bootstrap/bootstrap-collapse-plugin.html

注意:在在线编辑器中把下图中的in去掉,这个会使得该折叠默认开启,影响后续判断

下面开始“控制变量法”摸索:

这个时候的js代码是空的,此时就是每次只能展开一个的折叠模块

 

这个时候的js块是空的,四个自闭的折叠框,每次只能显示一个。

 

当为第四个折叠框添加这一行代码:

可以看到在别的元素被打开时,第四部分也能够被打开。但第四元素先被打开后再开启别的元素,第四部分会被隐藏。

以下这几个写法同理:

 

 

 

注意:#collapseOne这个是一开始原本默认展开的元素,使用这个方法也可以让他闭合。

同样的,如第二个,一开始默认闭合的也可以在js中使其展开。(可能有别的什么用吧)

 

而只要是设置了这些属性:

的折叠模块,在后打开的情况下,就不会触发默认的闭合效果。

知道了这个后用JQ/JS写起来就很简单了~

posted @ 2019-05-14 19:31  林不渡  阅读(1947)  评论(0编辑  收藏  举报