So finden Sie <script> - Elemente mit besonderem Wert für "type" - Attribut?
Vorausgesetzt das folgende Skript-tag in einer zufälligen HTML-Dokument:
<script id="target" type="store">
//random JavaScript code
function foo(){
alert("foo");
}
foo();
</script>
kann jemand erklären, warum der folgende Ausdruck nicht gefunden wird, werden alle Elemente des script
mit Wert store
für Ihre type
Attribut.
var sel = $('#target script[type="store"]');
jQuery-version: v1.7.2
Chrome version: 25.0.1364.172 (unter Debian Squeeze)
- Warum diese komplexe Selektor ? Da nur ein element kann eine bestimmte id, die Sie sollten benutzen Sie einfach
$('#target')
- OP ist daran interessiert, "alle Elemente".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Selektor
$('#target script[type="store"]')
würde mit jeder script-tag mit typestore
ist das ein child-element des Elements mit der idtarget
. Das ist nicht der Fall für Ihr Beispiel HTML.Wenn Sie möchten, wählen Sie alle script-tags mit dem Typ
store
Ihre Auswahl sollte folgendermaßen Aussehen:$('script[type="store"]')
.Wenn Sie nur wollen, wählen Sie die Skript-tag mit id
target
könnten Sie$('#target')
nur. Keine Notwendigkeit, um genauer zu sein als die ID sollte eindeutig sein, um das element aus. Nur anhand der ID-Selektor wäre effizienter, da jQuery dann könnte nutzen Sie die nativedocument.getElementById()
wählen Sie ein element (eine Mikro-Optimierung vielleicht, aber trotzdem...)Weil das was du geschrieben hast bedeutet: hier finden Sie alle
script
element mit einem Attributtype
gleichstore
und ein Nachkomme von#target
(wegen dem Platz).Könnte man etwas machen wie:
aber dies ist unnötig, da eine ID identifiziert ein element - keine Elemente in einem Dokument die gleiche ID nutzen können.
Wenn ich verstehe deine Beschreibung gut, was Sie brauchen, ist:
Eins noch: sollten Sie nicht verwenden die
type
- Attribut für diesen. Es hat einen sehr spezifischen Zweck:So, ich schlage vor, Sie verwenden
data-type
statttype
.Müssen Sie diese -
müssen Sie tun
In diesem Selektor Sie suchen nach script-tag mit type="speichern" im script-tag. Sie sollten versuchen:
Verwenden Sie diese
Kürzeste Erklärung möglich:
Den Sie versuchen zu Ziel das Kind-Skript von
#target
.Zum Beispiel, wenn Sie Ihr markup wurden, um die Wirkung von...
...Ihre jQuery-Auswahl funktionieren würde.
Auswählen, um ALLE script-Elemente mit dem Typ der bestimmte Wert tun:
, Um ein bestimmtes Skript, das eine ID als gut tun:
Kann man auch auf das Skript ausgeführt wird, ohne Bezeichner:
Was Sie werden merken, wenn Sie diesen code ausführen, ist, dass das erste script sich selbst als Ziel, und Ausgabe auf die Konsole, als auch als Ziel die endgültige Skript in das Dokument mit der
//The event will target me :(
Kommentar.Der Grund dafür ist, dass außerhalb der Veranstaltung, das Letzte element Hinzugefügt werden, um den DOM ist das script-tag das ausführen der Anweisungen, das bedeutet logischerweise, die die Letzte script-tag in
$('script')
.Jedoch, im inneren der Veranstaltung, die in diesem Fall
document.on('ready')
, wartet, bis das DOM fertig geladen ist, so dass keine zusätzliche Skript-tags, die möglicherweise existieren in dem Dokument wird geladen und ersetzt das gewünschte.last()
Ziel.