jQuery-Abfrage - filter() Methode

Beispiel

Ändert die Farbe aller "div"-Elemente und fügt der Klasse "middle" einen Rahmen hinzu:

$("div").css("background", "#c8ebcc")
  .filter(".middle")
  .css("border-color", "red");

Versuchen Sie es selbst

Definition und Verwendung

Die filter() -Methode reduziert die Sammlung der übereinstimmenden Elemente auf die Elemente, die dem angegebenen Selector entsprechen.

Syntax

.filter(selector)
Parameter Beschreibung
selector Zeichenkette, die den Selector-Ausdruck enthält, der zur Übereinstimmung mit der aktuellen Element集合.

Detaillierte Erklärung

Wenn ein jQuery-Objekt gegeben ist, das eine Sammlung von DOM-Elementen darstellt, erstellt die .filter() -Methode einen neuen jQuery-Objekt, der aus dem Unter집 der Elemente besteht, die dem Selector entsprechen. Der Selector testet jeden Element; alle Elemente, die dem Selector entsprechen, werden im Ergebnis enthalten sein.

Denken Sie an diese Seite mit einer einfachen Liste:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
</ul>

Wir können diese Methode auf diese Liste anwenden:

$('li').filter(':even').css('background-color', 'red');

Versuchen Sie es selbst

Das Ergebnis dieser Anfrage ist, dass die Hintergrundfarbe der Elemente 1, 3 und 5 auf rot gesetzt wird, weil sie alle dem Selector entsprechen (denken Sie daran, dass :even und :odd auf einen index basieren, der ab 0 beginnt).

使用过滤函数

Die zweite Form dieser Methode筛选元素是通过函数而不是选择器。对于每个元素,如果该函数返回 true,则元素会被包含在已筛选集合中;否则,会排除这个元素。

Sehen Sie sich diesen etwas komplexeren HTML-Abschnitt an:

<ul>
  <li><strong>list</strong> item 1 - one strong tag</li>
  <li><strong>list</strong> item <strong>2</strong>
   - two <span>strong tags</span></li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
  <li>list item 6</li>
</ul>

Wir können diese Liste auswählen und sie basierend auf ihrem Inhalt filtern:

$('li').filter(function(index) {
  return $('strong', this).length == 1;
).css('background-color', 'red');