jQuery Snippet einbinden - wie?
am 08.07.2008 - 11:51 Uhr in
Hallo zusammen,
ich möchte mit Hilfe eines kleinen jQuery Snippets auf einer Seite bestimmten Links ein class Attribut hinzufügen. Leider funktioniert das nicht so richtig, vielleicht mach ich was falsch. Hier mal der eingefügte Code:
<?php
// jQuery Snippet
$script = '$(document).ready(function(){$("li.leaf a").addClass("greybox");});';
drupal_add_js($script, 'inline');
// JS-Snippet zur Kontrolle
$script = '$(document).ready(function(){alert("Fertig!");});';
drupal_add_js($script, 'inline');
?>Ich habe also zur Kontrolle noch ein reines JS-Snippet eingebunden. Dieses funktioniert auch.
Beide Snippets werden von Drupal sauber im Header eingebunden, aber das jQuery Snippet bewirkt einfach gar nichts. jQuery ist aktuell (1.26 über jquery_update). Am Selektor ("li.leaf a") liegt es auch nicht, da kann ich reinschreiben was ich will. Also, wo ist der Denkfehler?
Danke und Gruß,
Boris
- Anmelden oder Registrieren um Kommentare zu schreiben

Hallo bb, das Snippet ist
am 08.07.2008 - 12:19 Uhr
Hallo bb,
das Snippet ist korrekt und fügt auch die entsprechende class hinzu.
Wie überprüfst du dies denn? View Sourcecode beim Webbrowser wird
dir dies nicht anzeigen, da es nur im DOM verändert wird.
Grüße,
Robin
Stimmt!
am 08.07.2008 - 13:03 Uhr
Hallo,
danke, auf die Idee bin ich gar nicht gekommen. Jetzt hab ich mir das Ganze mal mit Firefox angeschaut, da gibt es ein "View Generated Source". Und das bringt mich ein kleines Stück weiter. Im Header des erzeugten Code findet man Folgendes:
<script type="text/javascript">var GB_ANIMATION = true;$(document).ready(function(){
$("a.greybox").click(function(){
var t = this.title || $(this).text() || this.href;
GB_show(t,this.href,720,960);
return false;
});
});</script>
<script type="text/javascript">$(document).ready(function(){$("li.leaf a").addClass("greybox");});</script>
<script type="text/javascript">$(document).ready(function(){alert("Fertig!");});</script>
Im Body sind die Links tatsächlich korrekt mit class="greybox" ausgezeichnet. Habe ich hier jetzt ein Reihenfolgeproblem, da das Greybox-Modul seinen Code vor meinem Snippet einfügt (drupal_add_js fügt ja immer hinten an)? Und wie könnte ich das lösen? Statt document.ready einen anderen Auslöser verwenden?
Gruß,
Boris
Hallo bb, dem Modul, welches
am 08.07.2008 - 15:17 Uhr
Hallo bb,
dem Modul, welches die Greyboxklasse den Links hinzufügt ein niedrigeres weight zuordnen, als dem Greyboxmodul. Dann wird der Code vor dem der Greybox ausgeführt.
Grüße,
Robin
Mal sehen
am 08.07.2008 - 15:33 Uhr
Hallo,
im Moment ist das ne ganz normale Page in Drupal, und am Gewicht der Systemmodule fummel ich lieber nicht rum :-)
Vielleicht mach ich ein Modul draus, ansonsten werd ich das Snippet vielleicht statt mit drupal_add_js einfach fest in die Template-Datei für die Seite schreiben (vor den anderen Scripts).
Vielen Dank einstweilen!
Gruß,
Boris