【问题标题】:How to increment/decrement an objects property value with an event?如何通过事件增加/减少对象属性值?
【发布时间】:2015-05-28 02:03:38
【问题描述】:

我正在尝试将手风琴小部件用于 jQuery-ui。我正在尝试构建的是一个功能,它将通过滑动循环浏览所有选项卡。为了这个例子,我使用了一个点击事件,因为我让向上/向下滑动事件侦听器单独工作,并且与我的问题无关。本质上,用户将滑动或单击一个区域,然后选项卡将在 3 个部分来回循环。

我是在正确的轨道上还是有更好的方法来实现这一点?

jsFiddle demo

JS

$(function () {
    $("#accordion").accordion({
        collapsible: true,
        active: false
    });
});


$('#cycle').click(function () {

    $('#accordion').accordion({
        active: 0
    });

    function incrementAccValue(obj, val) {
        obj = $('#accordion').accordion({
            active: val
        });

        obj.active++ //stuck here..?
       
    }

});

//How to increment an object's property value?

【问题讨论】:

    标签: javascript jquery jquery-ui javascript-objects


    【解决方案1】:

    你在正确的轨道上。您只需要将活动数字存储在 click 函数范围之外,以便在下一次点击事件时可以使用该值。

    这样的东西应该可以工作:http://jsfiddle.net/30vm5y75/

    var max_items = $('#accordion h3').length;
    var current_item = 0;
    
    $('#cycle').click(function () {
    
        $('#accordion').accordion({
            active: current_item
        });
    
        if (current_item < max_items-1) {
            current_item = current_item + 1;
        } else {
             current_item = 0;   
        }
    
    });
    

    【讨论】:

      【解决方案2】:

      不确定这是否是您需要的,但我已经更新了您的小提琴here

      更新的 JS:

      var activeIndex = 0,
          maxIndex = $("#accordion h3").length - 1;
      
      $(function () {
          $("#accordion").accordion({
              collapsible: true,
              active: false
          });
      });
      
      $('#cycle').click(function () {
      
          $('#accordion').accordion({
              active: activeIndex
          });
      
          activeIndex = ( activeIndex == maxIndex ? 0 : activeIndex+1);
      
      });   
      

      【讨论】:

        【解决方案3】:

        来自文档:

        // Getter
        var active = $( ".selector" ).accordion("option", "active" );
        
        // Setter
        $( ".selector" ).accordion( "option", "active", 2);
        

        因此,您不必将当前索引存储在任何地方;只需获取活动索引,然后将活动索引设置为active + 1 或手风琴的长度减一,以较小者为准。

        【讨论】:

          猜你喜欢
          • 2021-10-24
          • 2017-11-05
          • 1970-01-01
          • 2017-03-02
          • 2018-04-15
          • 1970-01-01
          • 2021-05-06
          • 2020-07-31
          • 2021-09-27
          相关资源
          最近更新 更多