jQuery Kurz und bündig jQuery-Auswahl

Benutzerdefinierte jQuery-Filter können Elemente auswählen, wenn sie alleine verwendet werden

Es ist nicht erforderlich, ein tatsächliches Element in Verbindung mit einem Filter wie z $ ('div: hidden'). Es ist möglich, den Filter einfach alleine durchzulassen, wo immer ein Selektorausdruck erwartet wird.

Einige Beispiele:

 // Wählt alle ausgeblendeten Elemente aus $ (': hidden'); // Wählt alle div-Elemente aus und dann nur gerade Elemente $ ('div'). Filter (': even');

Grokking the: Hidden und: Visible Filter

Der benutzerdefinierte jQuery-Selektor filtert :versteckt und :sichtbar Berücksichtigen Sie die CSS-Sichtbarkeitseigenschaft nicht wie erwartet. Mit jQuery wird bestimmt, ob ein Element ausgeblendet oder sichtbar ist, wenn das Element im Dokument Platz beansprucht. Um genau zu sein, ist ein Element sichtbar, wenn es von seinem Browser gemeldet wird offsetWidth oder offsetHeight ist größer als 0. Auf diese Weise kann ein Element ein CSS enthalten Anzeige Wert von Block enthalten in einem Element mit einem Anzeige Wert von keiner würde genau melden, dass es nicht sichtbar ist.

Überprüfen Sie den Code sorgfältig und stellen Sie sicher, dass Sie verstehen, warum der zurückgegebene Wert ist wahr obwohl die

Die Auswahl hat einen Inline-Stil von Bildschirmsperre.

    

Verwenden der Is () - Methode, um einen booleschen Wert zurückzugeben

Häufig muss festgestellt werden, ob die ausgewählte Gruppe von Elementen tatsächlich ein bestimmtes Element enthält. Verwendung der is () Methode können wir den aktuellen Satz mit einem Ausdruck / Filter vergleichen. Der Scheck wird zurückgegeben wahr wenn der Satz mindestens ein Element enthält, das vom angegebenen Ausdruck / Filter ausgewählt wird. Wenn es das Element nicht enthält, a falsch Wert wird zurückgegeben. Untersuchen Sie den folgenden Code:

    
jQuery
jQuery

Es sollte offensichtlich sein, dass der zweite warnen() gibt den Wert "false" zurück, da unser Wrapper-Set kein

das hatte eine Ich würde Attributwert von i2. Das is () Diese Methode ist sehr praktisch, um festzustellen, ob der Wrapper-Satz ein bestimmtes Element enthält.

Anmerkungen: Ab jQuery 1.3 wurde der is () Methode unterstützt alle Ausdrücke. Zuvor waren komplexe Ausdrücke wie solche, die Hierarchieselektoren enthalten (z. B. +, ~, und >) kam immer zurück wahr.

Der Filter wird von anderen internen jQuery-Funktionen verwendet. Daher gelten auch hier alle Regeln, die dort gelten.

Einige Entwickler verwenden ist ('. Klasse') um festzustellen, ob ein Element eine bestimmte Klasse hat. Vergessen Sie nicht, dass jQuery bereits eine Methode dafür hat hasClass ('Klasse'), Dies kann für Elemente verwendet werden, die mehr als einen Klassenwert enthalten. Aber die Wahrheit muss gesagt werden, hasClass () ist nur eine praktische Hülle für die is () Methode.


Sie können jQuery mehr als einen Auswahlausdruck übergeben

Sie können den ersten Parameter der jQuery-Funktion mit mehreren durch ein Komma getrennten Ausdrücken angeben: $ ('Ausdruck, Ausdruck, Ausdruck'). Sie können also nicht nur Elemente mit einem einzigen Ausdruck auswählen. Im folgenden Beispiel übergebe ich die jQuery-Funktion mit drei Ausdrücken, die durch ein Komma getrennt sind.

    
jQuery

ist der

  • Beste!

Jeder dieser Ausdrücke wählt DOM-Elemente aus, die alle dem Wrapper-Set hinzugefügt werden. Wir können diese Elemente dann mit jQuery-Methoden bearbeiten. Beachten Sie, dass alle ausgewählten Elemente im selben Wrapper-Set platziert werden. Eine ineffiziente Methode wäre, die jQuery-Funktion dreimal für jeden Ausdruck aufzurufen.


Wrapper prüfen Legen Sie die Längenangabe fest, um die Auswahl zu bestimmen

Sie können feststellen, ob Ihr Ausdruck etwas ausgewählt hat, indem Sie prüfen, ob der Wrapper-Satz eine Länge hat. Verwenden Sie dazu die Array-Eigenschaft Länge. Wenn die Länge Wenn die Eigenschaft nicht 0 zurückgibt, müssen Sie wissen, dass mindestens ein Element mit dem Ausdruck übereinstimmt, den Sie an die jQuery-Funktion übergeben haben. Im folgenden Code überprüfen wir beispielsweise die Seite nach einem Element mit einem Ich würde von "notHere". Erraten Sie, was? Es ist nicht da!

       

Anmerkungen: Wenn dies nicht offensichtlich ist, kann die length -Eigenschaft auch die Anzahl der Elemente in der Wrapper-Gruppe angeben - anders ausgedrückt, wie viele Elemente von dem an die jQuery-Funktion übergebenen Ausdruck ausgewählt wurden.


Benutzerdefinierte Filter zum Auswählen von Elementen erstellen

Die Funktionen des jQuery-Auswahlmoduls können durch Erstellen eigener benutzerdefinierter Filter erweitert werden. In der Theorie bauen Sie hier nur auf den benutzerdefinierten Selektoren auf, die bereits Teil von jQuery sind. Angenommen, wir möchten alle Elemente auf einer Webseite auswählen, die absolut positioniert sind. Da jQuery noch keine benutzerdefinierte hat : positionAbsolute Filter können wir unsere eigenen erstellen.

    
absolut
absolut
statisch
absolut
statisch
absolut

Das Wichtigste dabei ist, dass Sie nicht auf die von jQuery bereitgestellten Standardselektoren beschränkt sind. Sie können Ihre eigenen erstellen. Bevor Sie sich jedoch die Zeit nehmen, Ihre eigene Version eines Selektors zu erstellen, versuchen Sie es einfach mit Filter() Methode mit einer angegebenen Filterfunktion. Zum Beispiel hätte ich es vermeiden können, das zu schreiben : positionAbsolute Auswahl durch einfaches Filtern der

Elemente in meinem vorherigen Beispiel mit einer Funktion übergebe ich an die Filter() Methode.

 // Löschen 
Elemente aus dem // Wrapper-Set, die nicht absolut positioniert sind $ ('div'). filter (function () return $ (this) .css ('position') === 'absolute';); // oder // Entferne alle Elemente aus dem Wrapper // Satz, die nicht absolut positioniert sind $ ('*'). filter (function () return $ (this) .css ('position') === 'absolute' ;);

Anmerkungen: Für weitere Informationen zum Erstellen eigener Selektoren empfehle ich Folgendes: http://www.bennadel.com/blog/1457-How-To-Build-A-Custom-jQuery-Selector.htm


Unterschiede bei der Filterung nach numerischer Reihenfolge im Vergleich zu DOM-Beziehungen

jQuery bietet Filter zum Filtern eines Wrapper-Sets nach dem numerischen Kontext eines Elements innerhalb des Sets.

Diese Filter sind:

  • :zuerst
  • :zuletzt
  • :sogar
  • :ungerade
  • : eq (index)
  • : gt (index)
  • : lt (index)

Anmerkungen: Filter, die den Wrapper-Satz selbst filtern, filtern die Elemente im Satz an einem Startpunkt von 0 oder einem Index von 0. Zum Beispiel : eq (0) und :zuerst Greifen Sie auf das erste Element im Satz zu - $ ('div: eq (0)') - Welches ist bei einem 0-Index. Dies steht im Gegensatz zum : n-te Kind eins indizierter Filter. Das bedeutet zum Beispiel, : n-te Kind (1) gibt das erste untergeordnete Element zurück, versucht jedoch zu verwenden : n-te Kind (0) wird nicht funktionieren. Verwenden : n-te Kind (0) wird immer nichts auswählen.

Verwenden :zuerst wählt das erste Element des Sets aus :zuletzt wählt das letzte Element in der Gruppe aus. Denken Sie daran, dass die Gruppe nach der Beziehung (numerische Hierarchie beginnend bei 0) innerhalb der Gruppe gefiltert wird, nicht jedoch nach den Beziehungen der Elemente im Kontext des DOM. Angesichts dieses Wissens sollte es offensichtlich sein, warum die Filter funktionieren :zuerst, :zuletzt, und : eq (index) wird immer ein einzelnes Element zurückgeben.

Wenn es nicht offensichtlich ist, lassen Sie mich weiter erklären. Der Grund dass :zuerst Ein einzelnes Element kann nur zurückgegeben werden, weil in einer Menge nur ein Element enthalten sein kann, das als erstes betrachtet wird, wenn nur eine Menge vorhanden ist. Das sollte ziemlich logisch sein. Untersuchen Sie den folgenden Code, um dieses Konzept in Aktion zu sehen.

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Mit einem klaren Verständnis der Manipulation des Sets selbst können wir unser Verständnis für das Auswählen von Elementen erweitern, indem Sie Filter verwenden, die Elemente auswählen, die eindeutige Beziehungen zu anderen Elementen im eigentlichen DOM haben. jQuery stellt hierfür mehrere Selektoren zur Verfügung. Einige dieser Selektoren sind benutzerdefiniert, während andere bekannte CSS-Ausdrücke zum Auswählen von DOM-Elementen sind.

  • Vorfahr Nachkomme
  • Elternteil> Kind
  • vorheriges + nächstes
  • vor ~ Geschwister
  • : n-te Kind (Selektor)
  • :erstes Kind
  • :letztes Kind
  • :Einzelkind
  • :leeren
  • : has (Wahlschalter)
  • :Elternteil

Bei Verwendung dieser Auswahlfilter werden Elemente basierend auf ihrer Beziehung innerhalb des DOM so ausgewählt, dass sie sich auf andere Elemente im DOM beziehen. Um dieses Konzept zu veranschaulichen, wollen wir uns etwas Code ansehen.

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

Wenn Sie überrascht sind, dass $ ('li: nth-child (ungerade)'). text () Gibt den Wert 135135 zurück, sind Sie noch keine Beziehungsfilter. Die Aussage, $ ('li: nth-child (ungerade)') sagte verbal wäre "alles finden"

  • Elemente auf der Webseite, die Kinder sind, und filtern sie dann nach ungeraden Kindern. "Nun, es ist einfach so, dass es zwei Strukturen auf der Seite gibt, die aus einer Gruppe von Geschwistern bestehen
  • s. Mein Punkt ist folgender: Der Wrapper-Satz besteht aus Elementen, die auf einem Filter basieren, der die Beziehung eines Elements zu anderen Elementen im DOM berücksichtigt. Diese Beziehungen können an mehreren Orten gefunden werden.

    Das Konzept, das Sie mitnehmen sollten, ist, dass nicht alle Filter gleich erstellt werden. Stellen Sie sicher, dass Sie verstehen, welche Filter basierend auf DOM-Beziehungen, z. :Einzelkind-und welche nach der Position der Elemente filtern, z. : eq ()-im verpackten Satz.


    Elemente nach ID auswählen, wenn der Wert Meta-Zeichen enthält

    jQuery-Selektoren verwenden eine Reihe von Meta-Zeichen (z. # ~ [] => ) wenn es als wörtliche Bezeichnung eines Namens verwendet wird (z. id = "# foo [bar]") sollte entkommen werden. Es ist möglich, Zeichen zu umgehen, indem Sie zwei umgekehrte Schrägstriche vor dem Zeichen platzieren. Sehen Sie sich den folgenden Code an, um zu sehen, wie wir durch die Verwendung von zwei umgekehrten Schrägstrichen im Auswahlausdruck ein Element mit einem id-Attributwert von auswählen können #foo [bar].

        
    jQuery

    Hier ist die vollständige Liste der Zeichen, für die ein Escape-Zeichen erforderlich ist, wenn sie als literale Komponente eines Namens verwendet werden.

    • #
    • ;
    • &
    • ,
    • .
    • +
    • *
    • ~
    • '
    • :
    • "
    • !
    • ^
    • $
    • [
    • ]
    • (
    • )
    • =
    • >
    • |
    • /

    Stacking-Auswahlfilter

    Es ist möglich, Auswahlfilter zu stapeln, z. a [title = "jQuery"] [href ^ = "http: //"]. Das offensichtliche Beispiel hierfür ist die Auswahl eines Elements mit bestimmten Attributen mit bestimmten Attributwerten. Zum Beispiel wird der jQuery-Code nur ausgewählt Elemente in der HTML-Seite, die:

    • Enthalten ein href Attribut mit dem Startwert "http: //"
    • Haben eine Titel Attribut mit dem Wert "jQuery"

    Einziger wird ausgewählt.

        jQuery.com jQuery.com 1 jQuery.com    

    Beachten Sie im Code, wie wir zwei Filter gestapelt haben, um diese Auswahl zu treffen.

    Andere Auswahlfilter können neben Attributfiltern auch gestapelt werden. Zum Beispiel:

     // wähle das letzte aus 
    im // Wrapper-Set enthalten, das den Text "jQuery" enthält $ ('div: last: contains ("jQuery")') // Alle Kontrollkästchen abrufen, die sowohl sichtbar als auch ausgewählt sind $ (': Kontrollkästchen: sichtbar: Aktiviert) ')

    Das Konzept, das Sie mitnehmen sollten, besteht darin, dass Auswahlfilter gestapelt und in Kombination verwendet werden können.

    Anmerkungen: Sie können auch Filter verschachteln und stapeln, z. $ ('p'). filter (': nicht (: zuerst): nicht (: zuletzt)')


    Filter für die Verschachtelungsauswahl

    Auswahlfilter können verschachtelt werden. Auf diese Weise können Sie Filter sehr präzise und leistungsstark einsetzen. Im Folgenden werde ich ein Beispiel dafür geben, wie Sie Filter verschachteln können, um komplexe Filter auszuführen.

        
    Javascript
    jQuery
    Javascript
    jQuery
    Javascript
    jQuery

    Das Konzept, das Sie mitnehmen sollten, besteht darin, dass Auswahlfilter verschachtelt werden können.

    Anmerkungen: Sie können auch Filter verschachteln und stapeln, z. $ ('p'). filter (': nicht (: zuerst): nicht (: zuletzt)')


    Grokking den: nth-child () Filter

    Das n-Kind () Filter hat viele Anwendungen. Angenommen, Sie möchten nur jeden dritten auswählen

  • Element in einem enthalten