Angenommen, das folgende Skript-Tag in einem zufälligen HTML-Dokument:
%Vor% kann jemand erklären, warum der folgende Ausdruck nicht alle Elemente von script
mit dem Wert store
für ihr type
-Attribut findet.
jQuery-Version: v1.7.2 Chrome-Version: 25.0.1364.172 (läuft unter Debian Squeeze)
Ihr Selektor $('#target script[type="store"]')
würde jedem Skript-Tag mit dem Typ store
entsprechen, das ein Kind des Elements mit der ID target
ist. Was ist nicht der Fall für Ihr Beispiel HTML.
Wenn Sie alle Script-Tags mit dem Typ store
auswählen möchten, sollte Ihr Selektor etwa so aussehen: $('script[type="store"]')
.
Wenn Sie nur das bestimmte Skript-Tag mit der ID target
auswählen möchten, können Sie nur $('#target')
verwenden. Sie müssen nicht genauer sein, da die ID für dieses Element eindeutig sein muss. Die Verwendung nur des ID-Selektors wäre ebenfalls effizienter, da jQuery dann das native document.getElementById()
verwenden könnte, um Ihr Element auszuwählen (vielleicht eine Mikrooptimierung, aber immer noch ...)
Weil das, was du geschrieben hast bedeutet: Finde jedes Sie könnten etwas tun wie: Dies ist jedoch unnötig, da eine ID bereits ein Element identifiziert - keine Elemente in einem Dokument können die gleiche ID teilen. Wenn ich Ihre Beschreibung gut verstehe, brauchen Sie: Noch eine Sache: Sie sollten dafür nicht das Attribut Das Attribut type gibt die Sprache des Skripts oder Formats des
Daten. Wenn das Attribut vorhanden ist, muss sein Wert ein gültiger MIME sein
Art. Der Parameter charset darf nicht angegeben werden. Der Standardwert, der
Wird verwendet, wenn das Attribut nicht vorhanden ist, ist "text / javascript". Ich schlage also vor, dass Sie script
Element mit einem Attribut type
, das gleich store
ist und ein Nachfolger von #target
(wegen des Leerzeichens) type
verwenden. Es hat einen ganz bestimmten Zweck :
data-type
anstelle von type
verwenden.
In diesem Selektor suchen Sie nach einem Skript-Tag mit type="store" innerhalb des Skript-Tags. Sie sollten versuchen:
%Vor%Kürzeste Erklärung möglich:
Sie versuchen, das untergeordnete Skript von #target
zu targetieren.
Zum Beispiel, wenn Ihr Markup den Effekt von ... hatte
%Vor%... Ihre jQuery Auswahl würde funktionieren.
Um ALLE Skriptelemente mit einem bestimmten Wert auszuwählen, tun Sie Folgendes:
%Vor%Um ein bestimmtes Skript auszuwählen, das auch eine ID hat, tun Sie Folgendes:
%Vor%Man kann auch das Skript, das gerade ausgeführt wird, ohne Identifikatoren targetieren:
%Vor% Was Sie bei der Ausführung dieses Codes feststellen werden, ist, dass das erste Skript sich selbst anvisiert und an die Konsole ausgibt sowie das endgültige Skript im Dokument mit dem // The event will target me :(
-Kommentar ansieht.
Der Grund dafür ist, dass außerhalb des Ereignisses das letzte dem DOM hinzuzufügende Element das Skript-Tag ist, das die Anweisungen ausführt, was logischerweise das letzte Skript-Tag in $('script')
bedeutet.
Innerhalb des Ereignisses, in diesem Fall document.on('ready')
, wird jedoch gewartet, bis das DOM vollständig geladen ist, so dass alle zusätzlichen Skript-Tags, die möglicherweise im Dokument vorhanden sind, geladen werden und das gewünschte .last()
target.
Tags und Links jquery jquery-selectors dom-traversal