2012-04-24 34 views
9

我有一個同位素組合過濾器設置了一些數據過濾器組,各自有休息/顯示所有列表項:同位素:重置所有組合過濾

<li><a href="#" data-filter="*">Show all</a></li> 

是將所有的辦法數據過濾器組的 - 一個「重置所有」鏈接?

我目前JavaScript是:

 var $container = $('.content ul.sort'), 
      filters = {}; 

     $container.isotope({ 
      itemSelector : '.dynamic-filter' 
     }); 

     // filter buttons 
     $('.filter a').click(function(){ 
      var $this = $(this); 
      // don't proceed if already selected 
      if ($this.hasClass('selected')) { 
      return; 
      } 

      var $optionSet = $this.parents('.option-set'); 
      // change selected class 
      $optionSet.find('.selected').removeClass('selected'); 
      $this.addClass('selected'); 

      // store filter value in object 
      // i.e. filters.color = 'red' 
      var group = $optionSet.attr('data-filter-group'); 
      filters[ group ] = $this.attr('data-filter-value'); 
      // convert object into array 
      var isoFilters = []; 
      for (var prop in filters) { 
      isoFilters.push(filters[ prop ]) 
      } 
      var selector = isoFilters.join(''); 
      $container.isotope({ filter: selector }); 

      return false; 
     }); 

任何想法的?

< - 編輯 - >

似乎已經找到了答案,以我自己的問題:

 $(".isotope-reset").click(function(){ 
     $(".content ul.sort").isotope({ 
      filter: '*' 
     }); 
    }); 
+1

把你的答案在實際的答案,所以你可以選擇它,人們可以給予好評它 – 2013-10-07 14:13:15

回答

15

由於海報並沒有把他的答案的答案,這裏是人誰得到這個問題,並沒有看到有一個答案


下面的代碼重置ISOTOP過濾器:

$(".isotope-reset").click(function(){ 
    $(".content ul.sort").isotope({ 
     filter: '*' 
    }); 
}); 
+0

您還可以添加一個額外的行到非常相同的點擊功能中刪除「選擇」類,像這樣:'$('ul.isotope-options li a')。removeClass('selected');' – cptstarling 2016-07-18 12:40:58

1

我正在尋找類似的東西,我想我會把答案放在這裏,以防萬一另一名搜索者遇到這個問題。我提到的海報解決方案的問題是,至少對我來說,它並沒有做一個真正的重置。我想要重置按鈕以及過濾器。另外我遇到了一個奇怪的錯誤,在點擊重置按鈕後,我的過濾器無法正常工作。

下面的腳本解決了我所有的問題(在這個答案的日期,大聲笑)。來源:https://github.com/metafizzy/isotope/issues/928

var $anyButtons = $('.filters').find('button[data-filter=""]'); 
    var $buttons = $('.filters button'); 

    $('.button--reset').on('click', function() { 
    // reset filters 
    filters = {}; 
    $grid.isotope({ filter: '*' }); 
    // reset buttons 
    $buttons.removeClass('is-checked'); 
    $anyButtons.addClass('is-checked'); 
    });