【问题标题】:js module target classjs模块目标类
【发布时间】:2016-03-07 06:13:34
【问题描述】:

我是模块化 JS 的新手。我正在尝试将一个简单的类切换转换为一个模块,但我无法定位正确的 LI。这会切换所有箭头。

var toggleArrow = {
    init: function(){
        this.cacheDom();
        this.bindEvents();
        //this.render();
    },
    cacheDom: function(){
        this.$el = $('.has-accordion');
    },
    bindEvents: function(){
        this.$el.on('show hide',this.toggleAccordion.bind(this));
    },
    toggleAccordion: function(e){           
        this.$el.find('i').toggleClass('page-arrow-down');
    }

};
toggleArrow.init();
// spaguetti code being converted
// $('.collapsible').on("show", ".has-accordion", function(event){
//      $(this).find('i').addClass("page-arrow-down");
//  }); 
//  $('.collapsible').on("hide", ".has-accordion", function(event){
//      $(this).find('i').removeClass("page-arrow-down");
//  });

示例 html

<ul>
<li class="has-accordion" data-toggle="collapse" data-target="#collapseOne">One<i class="page-arrow-next"></i>
 <ul id="collapseOne" class="collapse">
        <li>Item 1</li>
        <li>Item 2</li>
 </ul>
</li>
<li class="has-accordion" data-toggle="collapse" data-target="#collapseTwo">Two<i class="page-arrow-next"></i>
 <ul id="collapseTwo" class="collapse">
        <li>Item 1</li>
        <li>Item 2</li>
 </ul>
</li>
</ul>

【问题讨论】:

    标签: javascript jquery modular


    【解决方案1】:

    jquery on('show hide')中没有此类事件,可以添加这些自定义方法。

    相反,您可以在打开的列表中添加一个“open”类,并可以使用 css 更改 &lt;i&gt; 样式。

    看看http://jsbin.com/debuticifo/edit?html,css,js,output

    【讨论】:

    • 可能值得在您的实际答案中添加一些代码。如果链接失效,这个答案就不值钱了。
    • 该列表附加了 Bootstrap 的可折叠代码,因此它会切换,并注册显示/隐藏方法。无论哪种方式,基于点击的响应都有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-02-04
    • 2019-10-05
    • 1970-01-01
    • 2017-10-09
    • 2020-01-13
    • 2011-03-19
    • 1970-01-01
    • 2012-06-20
    相关资源
    最近更新 更多