2012-04-24 6 views
9

Ich habe ein Isotop Kombinations-Filteraufbau mit einer Anzahl von Daten-Filter-Gruppe, die jeweils mit einem Rest/alle anzeigen Listenpunkt:Isotop: alle gespeicherten Kombination filtert

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

ist ein Weg, alle zurücksetzen Datenfilter-Gruppe - ein "Reset-all" -Link?

Mein aktueller Javascript ist:

 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; 
     }); 

Jede Idee ist?

< - Bearbeiten ->

Appear eine Antwort auf meine eigene Frage gefunden zu haben:

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

setzen Sie Ihre Antwort in einer tatsächlichen Antwort, so dass Sie es auswählen können und die Leute können upvote es –

Antwort

15

Wie das Plakat nicht in einer Antwort seine Antwort gebracht hat, hier für ist Menschen, die auf diese Frage bekommen und sehen nicht, dass es eine Antwort


folgenden Code setzt Isotop Filter:

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

Sie können auch eine zusätzliche Zeile hinzufügen, die „ausgewählt“ Klasse innerhalb dieser gleichen Klick-Funktion zu entfernen, so zum Beispiel: '$ ('ul.isotope-options li a'). removeClass ('selected'); – cptstarling

1

Ich war auf der Suche nach etwas ähnlichem, dachte, ich würde die Antwort hier aufsetzen, nur für den Fall, dass ein anderer Sucher auf diese Frage stieß. Mein Problem mit der Lösung, die das Poster erwähnt, ist, dass es für mich zumindest keinen echten Reset gab. Ich wollte, dass die Tasten ebenso wie der Filter zurückgesetzt werden. Außerdem bekam ich einen seltsamen Fehler, bei dem meine Filter nach dem Drücken der Reset-Taste nicht richtig reagierten.

Das Skript unten löste alle meine Probleme (zum Zeitpunkt dieser Antwort, lol). Quelle: 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'); 
    });