jQuery-Throughsuche - closest() Methode

Beispiel

Dieses Beispiel zeigt, wie durch closest() eine Ereignisdelegation durchgeführt wird. Wenn der am nächsten liegende Listen-Element oder eines seiner Nachkommen-Elemente geklickt wird, wird der gelbe Hintergrund umgeschaltet:

$( document ).bind("click", function( e ) {
    $( e.target ).closest("li").toggleClass("hilight");
  });

Versuchen Sie es selbst

Definition und Verwendung

Die closest() Methode erhält das erste abgestimmte Vorgänger-Element, beginnt vom aktuellen Element und fährt bis zum Wurzelelement des DOM-Baums hinauf.

Syntax

.closest(selector)
Parameter Beschreibung
selector Zeichenfolgen-Wert, der einen Ausdrucks-Selektor für das abgestimmte Element enthält.

Detaillierte Erklärung

Wenn ein jQuery-Objekt gegeben ist, das eine Sammlung von DOM-Elementen darstellt, ermöglicht die .closest() Methode, diese Elemente und ihre Vorgänger im DOM-Baum zu durchsuchen und ein neues jQuery-Objekt aus den abgestimmten Elementen zu konstruieren..parents() Ähnlich wie die .closest() Methode, beide befahren das DOM-Baum hinauf. Der Unterschied zwischen ihnen ist虽然微妙,却很重要:

.closest() .parents()
Beginnen Sie vom aktuellen Element Beginnen Sie vom Elternelement
Befahren Sie das DOM-Baum bis zum ersten abgestimmten Element, das den Selektor anwendet. Befahren Sie das DOM-Baum bis zum Wurzelelement des Dokuments, fügen Sie jeden Vorgänger-Element in eine temporäre Sammlung hinzu; wird ein Selektor angewendet, wird diese Sammlung basierend auf dem Selektor gefiltert.
Rückgabe eines jQuery-Objekts, das Null oder einen Element enthält Rückgabe eines jQuery-Objekts, das Null, einen oder mehrere Elemente enthält

Bitte sehen Sie den folgenden HTML-Abschnitt:

<ul id="one" class="level-1">
  <li class="item-i">I</li>
  <li id="ii" class="item-ii">II
  <ul class="level-2">
    <li class="item-a">A</li>
    <li class="item-b">B
      <ul class="level-3">
        <li class="item-1">1</li>
        <li class="item-2">2</li>
        <li class="item-3">3</li>
      </ul>
    </li>
    <li class="item-c">C</li>
  </ul>
  </li>
  <li class="item-iii">III</li>
</ul>

Beispiel 1

Angenommen, wir führen eine Suche nach dem <ul>-Element von Element A aus:

$('li.item-a').closest('ul').css('background-color', 'red');

Versuchen Sie es selbst

Dies ändert die Farbe des <ul> im Level-2, da das Element beim Durchsuchen des DOM-Baums als erstes auftritt.

Beispiel 2

Angenommen, wir suchen nach dem <li>-Element:

$('li.item-a').closest('li').css('background-color', 'red');

Versuchen Sie es selbst

Dies ändert die Farbe des Listenelements A. Bevor die .closest() Methode das DOM-Baum durchsucht, beginnt sie mit dem li-Element selbst und sucht bis zum Matching des Elements A.

Beispiel 3

Wir können DOM-Elemente als Kontext übergeben und darin nach den nächsten Elementen suchen.

var listItemII = document.getElementById('ii');
$('li.item-a').closest('ul', listItemII).css('background-color', 'red');
$('li.item-a').closest('#one', listItemII).css('background-color', 'green');

Versuchen Sie es selbst

Der obige Code ändert die Farbe des <ul> im Level-2, da er sowohl der erste <ul>-Vorfahre des Listenelements A als auch der Nachfolger des Listenelements II ist. Er ändert nicht die Farbe des <ul> im Level-1, da er nicht der Nachfolger des Listenelements II ist.