[gelöst] Drupal 7: JS ist eingebunden aber tut nicht
Eingetragen von d_rehtür (39)
am 17.01.2011 - 12:37 Uhr in
am 17.01.2011 - 12:37 Uhr in
Hallo liebe Leute,
ich weiß nicht ob ich etwas Drupal spezifisches übersehen habe, aber in der Trockenübung hat es funktioniert. Der Code könnte auch simpler nicht sein...
(function($) {
$('.wurst').hide('slow');
})(jQuery);
nach http://drupal.org/update/modules/6/7#javascript_compatibility
...ich möchte also das div Element mit der Klasse wurst verstecken. (Ja, es geht um eine Metzgerei-Seite....)
Der Code wird als script.js über die theme.info eingebunden und schafft es auch bis in die geladene Seite. Dort versteckt er aber das div-Element nicht. Fehlermeldungen werden in Firebug nicht angezeigt.
Wäre sehr dankbar für Hilfe!
Andi
- Anmelden oder Registrieren um Kommentare zu schreiben
js
am 17.01.2011 - 12:42 Uhr
Hallo.
Hast Du das Javascript im Header eingebunden oder im Footer? Eventuell wird es ausgeführt, bevor das HTML-Element vorhanden ist.
Eventuell funktioniert es auch, wenn Du Deinen Code in Behaviors packst:
(function ($) {
Drupal.behaviors.exampleModule = {
attach: function(context, settings) {
$('.wurst', context).hide('slow');
}
};
})(jQuery);
Dann kümmert sich Drupal nämlich um den korrekten Initialisierungszeitpunkt des Skripts.
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Danke Stefan für die schnelle
am 17.01.2011 - 12:51 Uhr
Danke Stefan für die schnelle Antwort. Meine script.js wird im header eingebunden, als letzte js-datei.
Zu der Einbindung als behavior: Was muss ich anstelle von exampleModule einsetzen? Mein skript ist ja nicht an ein modul angebunden.
Danke schonmal
Super, es funktioniert schon
am 17.01.2011 - 12:55 Uhr
Super, es funktioniert schon mit exampleModule, auch wenn meine Frage nach der Angabe bleibt :)
"Modul"
am 17.01.2011 - 13:05 Uhr
Schön, dass es so funktioniert.
Was muss ich anstelle von exampleModule einsetzen? Mein skript ist ja nicht an ein modul angebunden.
Hm, da kannst Du irgendwas hinschreiben. Das definiert eigentlich nur so eine Art Namespace für dieses Skript.
Empfehlen würde ich da schon einen halbwegs deskriptiven Namen, also sowas wie
Dupal.behaviors.wurstHideItems
. Oder so ähnlich.Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Super, danke!
am 17.01.2011 - 13:06 Uhr
Super, danke!
Ich habe eine Anschlussfrage:
am 27.01.2011 - 12:22 Uhr
Ich habe eine Anschlussfrage: (Das sind meine ersten Versuche/Spielereien mit jQuery)
Ich möche einen click-event davor schalten, also ganz klassisch: Wenn ich auf A klicke, verschwindet B...
Es funktioniert mit dem Code:
(function ($) {
Drupal.behaviors.exampleModule = {
attach: function(context, settings) {
$('#block-views-neuste-artikel-block-1', context).hide('slow');
}
};
})(jQuery);
Wo? Wie? Warum? muss ich diesen Code (oder so ähnlich) einfügen?
$('#block-block-1', context).click(???);
Vielen Dank für eure Hilfe (Ich habe echt lange selbst probiert...
Das ist
am 27.01.2011 - 12:30 Uhr
das sind Javascript Funktionen die in JQuery
vordefiniert sind.
Am besten liest Du ein Tutorial über JQuery.
oder siehst Dir die jquery.js dateien mal an ;-)
LG
PS:
das meiste Basiert auf AJAX Request
wenn ich mich nicht mal wieder Irre :-)
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
jaja habe ich gemacht aber
am 27.01.2011 - 12:49 Uhr
jaja habe ich gemacht aber ich bin v.a. verwirrt durch das
(function ($) {
Drupal.behaviors.exampleModule = {
attach: function(
Ich habe Tutorials angesehen und gelesen. Auf jQuery.com sieht das ganze ganz einfach aus, sollte es auch sein, passiert aber nix..
Konkret: Ich möchte, dass '#block-views-neuste-artikel-block-1' ausgeblendet wird, wenn man darauf klickt:
Also:
(function ($) {
Drupal.behaviors.exampleModule = {
attach: function(context, settings) {
$('#block-views-neuste-artikel-block-1', context).click(function(){
$(this).hide('slow');
}}
};
})(jQuery);
Probier mal
am 27.01.2011 - 13:04 Uhr
mit alerts zu testen bis ob da überhaupt etwas aufgerufen wird
(function ($) {
Drupal.behaviors.exampleModule = {
attach: function(context, settings) {
alert("ATTACH");
$('#block-views-neuste-artikel-block-1', context).click(function(){
alert("CLICK");
$(this).hide('slow');
}}
};
})(jQuery);
Wenn "CLICK" Meldung erscheint
wurde der click handler aufgerufen.
Dann vermute ich der Fehler liegt im
$(this).hide('slow');
Probier dann mal das:
$('#block-views-neuste-artikel-block-1', context).hide('slow');
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
Vielen Dank für deine Hilfe!
am 27.01.2011 - 13:10 Uhr
Vielen Dank für deine Hilfe!
Das Problem lag bei den Klammern. Man muss sehr vorsichtig sein ;-)
Der richtige Code lautet:
(function ($) {
Drupal.behaviors.exampleModule = {
attach: function(context, settings) {
$('#block-views-neuste-artikel-block-1',context).click(function () {
$(this).slideUp();
});
}
}
})(jQuery);