jquery selector Problem mit Skript-Tags

9

Ich versuche, alle <script type="text/html"> -Tags auf einer Seite auszuwählen. Ich verwende <script> -Tags, um HTML-Templates zu speichern, ähnlich wie wie John Resig es tut . Aus irgendeinem Grund scheint der folgende jquery-Selektor nichts auszuwählen:

%Vor%

Dieses Markup befindet sich im BODY des HTML-Dokuments:

%Vor%

Ich habe auch versucht, es in den HEAD des HTML-Dokuments zu setzen, und es wird immer noch nicht gefunden. Kein Alarm wird jemals angezeigt.

Wenn ich stattdessen meinen Code zu diesem ändern:

%Vor%

Dann werden nur die Skripte im HEAD gefunden, die eine src für eine externe Datei haben. Skripte auf der aktuellen Seite wurden nicht gefunden. Zum Beispiel mit dem folgenden in HEAD:

%Vor%

Ich erhalte die folgenden Warnungen:

  • Skript jquery gefunden
  • Skript gefunden ui

Die Skripte custom und filter-test im HEAD sind nicht ausgewählt, ebenso wenig wie das Skript filter-search im body -Tag.

Ist das das erwartete Verhalten? Warum funktioniert das nicht? Ich kann es umgehen, aber es ist ärgerlich, dass es nicht funktioniert.

BEARBEITEN: Es stellt sich heraus, dass dies im obigen Beispiel funktioniert. In meiner Situation war der jquery-Code in einem externen Javascript-Modul und es funktionierte definitiv nicht. Als ich den Code in ein Skript-Tag auf der Seite selbst verschoben habe, funktionierte es. Ich habe immer noch nicht herausgefunden, warum es in der externen Datei nicht funktionieren würde, aber melde mich hier zurück, wenn ich es irgendwann lösen werde.

    
Tauren 07.05.2010, 09:40
quelle

2 Antworten

2

Welchen Browser benutzen Sie? Dieses Skript funktioniert gut für mich in Chrome, Firefox und IE6, gibt mir die Warnungen:

  • Skript jquery gefunden
  • Skript gefunden ui
  • Gefundenes Skript benutzerdefiniert
  • Gefunden TEMPLATE Skript Filter-Test
  • Gefunden TEMPLATE Skript Filter-Suche
majackson 07.05.2010, 09:53
quelle
1

Das Problem, das Sie mit einem externen Skript hatten, liegt wahrscheinlich an der Ladereihenfolge. Um die Reaktionszeit zu maximieren, beginnt der Browser mit dem Laden und Ausführen von Skripts auf der Seite, bevor die Seite vollständig heruntergeladen und analysiert wurde. Wenn Sie also ein Skript in das head-Element einbinden, wird es wahrscheinlich nicht in der Lage sein, auf Bereiche des DOM zuzugreifen, die weiter unten auf der Seite spezifiziert sind, wie Ihre benutzerdefinierten Skript-Tags.

Zwei mögliche Lösungen:

  • Ordnen Sie die Skript-Tags neu an, so dass die benutzerdefinierten Tags vor den Skripten stehen, die sie verwenden.
  • Umschließen Sie Ihre Skripts mit etwas, das darauf wartet, dass das DOM geladen wird (wie die Verknüpfung jQuery $ () ).
jcl 26.11.2012 10:47
quelle

Tags und Links