Wie kombiniert man mehrere Filter zusammen, um filter Task Zeilen mit jQuery?

Habe ich gehackt zusammen ein einfaches Beispiel Task-Liste, Tabelle mit HTML und der Verwendung von jQuery. Ich habe anbei noch einige on change Veranstaltungen zu meinem Filter DropDown Selection Fields

Demo: http://codepen.io/jasondavis/pen/MwOwMX?editors=101

Wie kombiniert man mehrere Filter zusammen, um filter Task Zeilen mit jQuery?

Habe ich eine Filter-Auswahl-Feld für jeden von diesen:

  • Zugewiesenen Benutzer
  • Task-Status
  • Meilenstein
  • Priorität
  • Tags

Unabhängig Sie alle arbeiten, um den job zu erledigen in ausfiltern von nicht passenden Ergebnisse von meinem Task-Liste Tabelle.

Für jede Aufgabe Zeile, Speichere ich den Wert der einzelnen filterbaren option in einem Data Attribute wie in diesem Beispiel Aufgabe Zeile HTML -:

      <tr id="task-3"
          class="task-list-row" 
          data-task-id="3"
          data-assigned-user="Donald"
          data-status="Not Started"
          data-milestone="Milestone 1"
          data-priority="Low"
          data-tags="Tag 3">
        <td>Task title 3</td>
        <td>11/16/2014</td>
        <td>02/29/2015</td>
        <td>Low</td>
        <td>Milestone 1</td>
        <td>Donald</td>
        <td>Tag 3</td>
      </tr>

Also der eigentliche Text für die Task-Zeile spielt keine Rolle, weil der Task-Zeile wird nicht angezeigt, alle Eigenschaften. Was zählt, ist der gespeicherte Wert in der Task-Zeile Data-Attribute.

Aufgabe der Zeile/Datensatz mit einem Miledstone eingestellt Milestone 2 wird ein Data-Attribut wie dieses data-milestone="Milestone 2"

Ein Beispiel-JavaScript/jQuery-Filter code:

//Task Milestone Dropdown Filter
$('#milestone-filter').on('change', function() {
  var taskMilestone = this.value;

  if(taskMilestone === 'None'){
    $('.task-list-row').hide().filter(function() {
      return $(this).data('milestone') != taskMilestone;
    }).show();
  }else{
    $('.task-list-row').hide().filter(function() {
      return $(this).data('milestone') == taskMilestone;
    }).show();  
  }
});

So, wie ich schon erwähnte. Ich kann jede meiner "Filter", um die Arbeit von thereself, aber sobald ich versuche mehr als 1 filter gleichzeitig, es wird nicht funktionieren mit diesem aktuellen code.

Ich würde schätzen jede Hilfe bei der Modifizierung von meinem code, um eine funktionierende multi-filter-Beispiel bitte?

Mein Aktuelles demo ist hier: http://codepen.io/jasondavis/pen/MwOwMX?editors=101


Update Test 2

Nachdem einige dachten, ich bin zu denken, dass vielleicht ich brauche zu speichern, die die aktuellen Filter-Werte in Variablen und dann auf jede change - Ereignis anstelle von das:

 return $(this).data('milestone') != taskMilestone;

Wäre es stattdessen brauchen, um mehr so sein wie diese...

 return $(this).data('milestone') != taskMilestone
        && $(this).data('priority') != taskPriority
        && $(this).data('tags') != taskTags
        && .... for all filters;

Klingt das ungefähr richtig?

Nevermind, habe gerade versucht, dies ohne Glück!

InformationsquelleAutor JasonDavis | 2015-06-23
Schreibe einen Kommentar