Javascript 尝试将多个值推入数组(同位素)

Javascript 尝试将多个值推入数组(同位素),javascript,arrays,jquery-isotope,Javascript,Arrays,Jquery Isotope,我使用同位素作为链接内容的分类组织者,以一种奇特的布局。我正在尝试将多个值推送到一个数组中,这样它将显示过滤器所触及的所有项目。然而,最终的结果只是显示数组中最新的项,而不是总和。最初,我将所有的值放入一个字符串中,然后将x声明为最终结果——我意识到这不是解决这个问题的方法,并对其进行了修改。我不是一个字符串,而是将其放入一个数组中,希望将每个值连接起来,以便显示它们。但是,我仍然只得到最新选定的值。如下所示 // store filter for each group var filt

我使用同位素作为链接内容的分类组织者,以一种奇特的布局。我正在尝试将多个值推送到一个数组中,这样它将显示过滤器所触及的所有项目。然而,最终的结果只是显示数组中最新的项,而不是总和。最初,我将所有的值放入一个字符串中,然后将x声明为最终结果——我意识到这不是解决这个问题的方法,并对其进行了修改。我不是一个字符串,而是将其放入一个数组中,希望将每个值连接起来,以便显示它们。但是,我仍然只得到最新选定的值。如下所示

  // store filter for each group
  var filters = {};

  $('.filters').on('click', '.button', function() {
    var filters = [];
    // var filters = '';
    var selected = $(this).data('selected');
    var group = $(this).data('group');
    var currentFilter = $(this).data('filter');

    // toggle function along with having multiple selectors
    if(selected == "0") {
      filters.push($(this).data('filter'));
      filters = filters.join(', ');
      // filters = $(this).data('filter');
      $(this).data('selected', "1");
      $(this).addClass('is-checked')
    }
    else {
      $(this).data('selected', "0");
      $(this).removeClass('is-checked')
    }

    // set filter for Isotope
    $grid.isotope({
      filter: filters
    });

    // flatten object by concatting values
    function concatValues(obj) {
      var value = '';
      for (var prop in obj) {
        value += obj[prop];
      }
      return value;
    }
  });
}());

我还设立了一个小提琴演奏会。谢谢你的建议。即使给我指出我可能错过的文档或教程,也会有很大的帮助。现在,我正在研究这个符合我拍摄目的的东西,看看如何修改我的代码以更好地适应这里发生的事情。

上周我也花了很多时间来研究这个。:)幸运的是我找到了Desandro的密码笔 希望有帮助

$( function() {

  // filter functions
  var filterFns = {
    greaterThan50: function() {
      var number = $(this).find('.number').text();
      return parseInt( number, 10 ) > 50;
    },
    even: function() {
      var number = $(this).find('.number').text();
      return parseInt( number, 10 ) % 2 === 0;
    }
  };

  // init Isotope
  var $container = $('.isotope').isotope({
    itemSelector: '.color-shape',
    filter: function() {
      var isMatched = true;
      var $this = $(this);

      for ( var prop in filters ) {
        var filter = filters[ prop ];
        // use function if it matches
        filter = filterFns[ filter ] || filter;
        // test each filter
        if ( filter ) {
          isMatched = isMatched && $(this).is( filter );
        }
        // break if not matched
        if ( !isMatched ) {
          break;
        }
      }
      return isMatched;
    }
  });

  // store filter for each group
  var filters = {};

  $('#filters').on( 'click', '.button', function() {
    var $this = $(this);
    // get group key
    var $buttonGroup = $this.parents('.button-group');
    var filterGroup = $buttonGroup.attr('data-filter-group');
    // set filter for group
    filters[ filterGroup ] = $this.attr('data-filter');
    // arrange, and use filter fn
    $container.isotope('arrange');
  });

  // change is-checked class on buttons
  $('.button-group').each( function( i, buttonGroup ) {
    var $buttonGroup = $( buttonGroup );
    $buttonGroup.on( 'click', 'button', function() {
      $buttonGroup.find('.is-checked').removeClass('is-checked');
      $( this ).addClass('is-checked');
    });
  });

});

上周我也花了很多时间在这上面。:)幸运的是我找到了Desandro的密码笔 希望有帮助

$( function() {

  // filter functions
  var filterFns = {
    greaterThan50: function() {
      var number = $(this).find('.number').text();
      return parseInt( number, 10 ) > 50;
    },
    even: function() {
      var number = $(this).find('.number').text();
      return parseInt( number, 10 ) % 2 === 0;
    }
  };

  // init Isotope
  var $container = $('.isotope').isotope({
    itemSelector: '.color-shape',
    filter: function() {
      var isMatched = true;
      var $this = $(this);

      for ( var prop in filters ) {
        var filter = filters[ prop ];
        // use function if it matches
        filter = filterFns[ filter ] || filter;
        // test each filter
        if ( filter ) {
          isMatched = isMatched && $(this).is( filter );
        }
        // break if not matched
        if ( !isMatched ) {
          break;
        }
      }
      return isMatched;
    }
  });

  // store filter for each group
  var filters = {};

  $('#filters').on( 'click', '.button', function() {
    var $this = $(this);
    // get group key
    var $buttonGroup = $this.parents('.button-group');
    var filterGroup = $buttonGroup.attr('data-filter-group');
    // set filter for group
    filters[ filterGroup ] = $this.attr('data-filter');
    // arrange, and use filter fn
    $container.isotope('arrange');
  });

  // change is-checked class on buttons
  $('.button-group').each( function( i, buttonGroup ) {
    var $buttonGroup = $( buttonGroup );
    $buttonGroup.on( 'click', 'button', function() {
      $buttonGroup.find('.is-checked').removeClass('is-checked');
      $( this ).addClass('is-checked');
    });
  });

});

这就是我最终得到的解决方案


我想出了一个单独的解决方案,但这是一支很棒的钢笔。我希望我以前见过它


这就是我最终得到的解决方案


我想出了一个单独的解决方案,但这是一支很棒的钢笔。我希望我以前见过它


这里的代码和codepen的代码不一样,给出了什么?这里的代码和codepen的代码不一样,给出了什么?我提出了一个单独的解决方案,但这是一支很棒的笔。我希望我以前见过它。我会把我的解决方案写在我原来的帖子上。我想出了一个单独的解决方案,但这是一支很棒的钢笔。我希望我以前见过它。我会把我的解决方案写在我原来的帖子上。