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');
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 Häufig muss festgestellt werden, ob die ausgewählte Gruppe von Elementen tatsächlich ein bestimmtes Element enthält. Verwendung der Es sollte offensichtlich sein, dass der zweite Anmerkungen: Ab jQuery 1.3 wurde der Der Filter wird von anderen internen jQuery-Funktionen verwendet. Daher gelten auch hier alle Regeln, die dort gelten. Einige Entwickler verwenden Sie können den ersten Parameter der jQuery-Funktion mit mehreren durch ein Komma getrennten Ausdrücken angeben: ist der 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. 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 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. 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 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 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 jQuery bietet Filter zum Filtern eines Wrapper-Sets nach dem numerischen Kontext eines Elements innerhalb des Sets. Diese Filter sind: 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 Verwenden Wenn es nicht offensichtlich ist, lassen Sie mich weiter erklären. Der Grund dass 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. 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. Wenn Sie überrascht sind, dass 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. jQuery-Selektoren verwenden eine Reihe von Meta-Zeichen (z. 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. Es ist möglich, Auswahlfilter zu stapeln, z. 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: 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. 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. Das Konzept, das Sie mitnehmen sollten, besteht darin, dass Auswahlfilter verschachtelt werden können. Anmerkungen: Sie können auch Filter verschachteln und stapeln, z. Das Wenn die zum Auswählen von Elementen verwendeten jQuery-Attributfilter nicht robust genug sind, versuchen Sie, reguläre Ausdrücke zu verwenden. James Padolsey hat eine schöne Erweiterung für die Filter-Selektoren geschrieben, mit der wir benutzerdefinierte reguläre Ausdrücke zum Filtern erstellen können. Ich habe hier ein Codebeispiel bereitgestellt, aber überprüfen Sie auch den Artikel auf http://james.padolsey.com, um alle Details zu erfahren. Nur direkte untergeordnete Elemente können mit dem Kombinierer ausgewählt werden Text Text Es ist möglich, den Combiner zu verwenden Grundsätzlich gilt, wahr
obwohl die Bildschirmsperre
.
Verwenden der Is () - Methode, um einen booleschen Wert zurückzugeben
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:
warnen()
gibt den Wert "false" zurück, da unser Wrapper-Set kein Ich würde
Attributwert von i2
. Das is ()
Diese Methode ist sehr praktisch, um festzustellen, ob der Wrapper-Satz ein bestimmtes Element enthält. 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
.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
$ ('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.
Wrapper prüfen Legen Sie die Längenangabe fest, um die Auswahl zu bestimmen
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!
Benutzerdefinierte Filter zum Auswählen von Elementen erstellen
: positionAbsolute
Filter können wir unsere eigenen erstellen.
Filter()
Methode mit einer angegebenen Filterfunktion. Zum Beispiel hätte ich es vermeiden können, das zu schreiben : positionAbsolute
Auswahl durch einfaches Filtern der Filter()
Methode. // Löschen
Unterschiede bei der Filterung nach numerischer Reihenfolge im Vergleich zu DOM-Beziehungen
:zuerst
:zuletzt
:sogar
:ungerade
: eq (index)
: gt (index)
: lt (index)
: 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.: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.: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.
Vorfahr Nachkomme
Elternteil> Kind
vorheriges + nächstes
vor ~ Geschwister
: n-te Kind (Selektor)
:erstes Kind
:letztes Kind
:Einzelkind
:leeren
: has (Wahlschalter)
:Elternteil
$ ('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.
: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
# ~ [] =>
) 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]
.
#
;
&
,
.
+
*
~
'
:
"
!
^
$
[
]
(
)
=
>
|
/
Stacking-Auswahlfilter
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:
href
Attribut mit dem Startwert "http: //"Titel
Attribut mit dem Wert "jQuery" jQuery.com jQuery.com 1 jQuery.com
// wähle das letzte aus
$ ('p'). filter (': nicht (: zuerst): nicht (: zuletzt)')
Filter für die Verschachtelungsauswahl
$ ('p'). filter (': nicht (: zuerst): nicht (: zuletzt)')
Grokking den: nth-child () Filter
n-Kind ()
Filter hat viele Anwendungen. Angenommen, Sie möchten nur jeden dritten auswählen Element in einem enthalten
Element. Mit dem ist es möglich n-Kind ()
Filter. Untersuchen Sie den folgenden Code, um ein besseres Verständnis für die Verwendung von n-Kind ()
Filter.
Auswählen von Elementen durch Suchen von Attributwerten mithilfe von regulären Ausdrücken
Unterschied zwischen der Auswahl von direkten Kindern und allen Nachkommen
>
oder über die Kinder()
Verfahrmethode. Alle Nachkommen können mit ausgewählt werden *
CSS-Ausdruck Stellen Sie sicher, dass Sie den Unterschied zwischen den beiden klar verstehen. Das folgende Beispiel zeigt die Unterschiede.
Auswählen von direkten untergeordneten Elementen, wenn bereits ein Kontext festgelegt ist
>
ohne Kontext, um direkte untergeordnete Elemente auszuwählen, wenn bereits ein Kontext bereitgestellt wurde. Untersuche den Code unten.
'> element'
kann als Ausdruck verwendet werden, wenn bereits ein Kontext bestimmt wurde.