zoukankan      html  css  js  c++  java
  • 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写起来就很简单了~

  • 相关阅读:
    移动端通过js来用rem控制字体大小的用法
    移动端字体大小自动缩放css样式控制
    meta
    兔子生兔子问题
    CSS hack
    为对象添加一个新的方法
    js实现菜单切换
    Node.js基础学习(第三幕)
    Node.js基础学习(第二幕)
    C#通用公共类库ZXNetStandardDepot.Common
  • 原文地址:https://www.cnblogs.com/linbudu/p/10864120.html
Copyright © 2011-2022 走看看