[gelöst] jQuery-Problem mit dynamisch nachgeladenem FiveStar Formular
am 24.09.2010 - 16:45 Uhr in
Hallo,
ich vermute zwar das es nur noch eine Kleinigkeit ist die mir fehlt, aber ich komme dennoch nicht weiter:
Ich habe eine Node-Anzeigeseite mit einem eigenen Template. Die ganze Seite wird gecached, da 99% des Inhalts sich nur sehr selten verändern.
Lediglich ein Counter und der aktuelle Bewertungsstand (mittels Fivestar-Modul) sollen bei jedem Seiten-Laden aktualisiert werden.
Dazu habe ich folgendes getan:
Ich lasse die Seite ganz normal von Drupal erzeugen, habe aber am Ende in einen Scriptbereich jQuery-Befehle eingefügt die die beiden Inhalte im aktuellen Zustand abholen.
Soweit klappt das auch ganz gut, die Daten sind aktuell.
ABER:
Das Bewertungs-Formular von Fivestar 'spinnt'. Es werden nciht mehr ( wie erwartet ) die Sterne zur Bewertung angezeigt, sondern eine Select-Box mit den Textrepräsentationen der einzelnen Bewertungsmöglichkeiten.
Ich vermute, dass ich nach dem Nachladen des aktuellen Fivestar-Formulars noch das Javascript dass in fivestar.js (im Modul-Ordner) hinterlegt ist 'irgendwie' nochmal ausführen muss.
An dieser Stelle verläßt es mich dann aber auch. Ich bin noch neu im Bereich jQuery daher hab ich keine Idee wie ich es bewerstelligen kann, dass das Script nochmal ausgeführt wird, damit ich halt meine Sterne wieder bekomme.
Ratschläge, Hinweise etc sind wie immer Willkommen ;)
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo, ich hatte heute ein
am 27.09.2010 - 22:24 Uhr
Hallo,
ich hatte heute ein ähliches Problem: ich lade in einem Node Inhalte per Ajax nach und nach dem ersten nachladen funktionierten die jQuery-Funktionen nicht mehr.
Hier habe ich einige Hinweise gefunden:
http://drupal.org/node/114774#javascript-behaviors
Die Lösung bei mir war bei mir so:
nachdem die Ajax-Antwort in die Seite eingebaut wurde
$(targetElement).html(response.data);
mit dieser Zeile die Behaviors auch an den neuen Inhalt "anhängen":
Drupal.attachBehaviors(targetElement);
Eine interessante Resource ist auch
http://drupal.org/node/121997
Gruss, Christian
Danke für den Hinweis der
am 28.09.2010 - 15:15 Uhr
Danke für den Hinweis der mich schon mal nen Stück weiterbrachte :)
Allerdings wars nicht ganz so einfach.
Zum einen mußte ich mit
Drupal.attachBehaviors(targetElement);
das Element in die Behaviors einhängen wie du es geschrieben hattest,
da aber fivestar auf das Event 'ready' lauscht (und das VOR dem nachladen schon durch ist) mußte ich noch mit einem
$(targetElement).trigger("ready");
die Verarbeitung des ready-Events auslösen, wenn der Inhalt nachgeladen war.
Nun tut es was es soll und ich hab so einiges über jQuery gelernt.
jQuery-Problem mit dynamisch nachgeladenem FiveStar Formular
am 11.01.2011 - 16:28 Uhr
Hallo zusammen,
ich habe genau das gleiche Problem und komme leider nicht darauf. Kann mir evtl. jemand weiterhelfen.
Ich habe das Component Modul installiert um den kompletten Node zu laden.
Hier mal der Code:
Javascript:
Drupal.behaviors.node_vote = function(context) {
$('.next-node-vote',context).click(function () {
var nodevote = $('.node-vote-wrapper');
$(nodevote).html('<div class="node-vote-loader"> </div>');
$(nodevote).load('bewerten/json');
Drupal.attachBehaviors(nodevote);
});
};
PHP:
function node_vote_json() {
$nid = db_fetch_object(db_query("SELECT nid FROM {node} ORDER BY RAND() LIMIT 1"))->nid;
$node = node_load($nid);
$node = node_build_content($node, $teaser, $page);
$output = component_get_node($node);
die($output);
}
„Nichts geschieht ohne Risiko, aber ohne Risiko geschieht auch nichts.“