Ich mache ein Modul für die Joomla! Seite eines Clients, der Ajax verwendet, um verschiedene Abfragen an die Datenbank zu rendern. Das Ergebnis dieser Abfragen ist, dass ich den gesamten HTML-Code der verschiedenen DIVs neu generiere. In meinem jQuery-Objekt habe ich eine Funktion namens cache()
, die alle Objekte speichert, die ich brauche, um ihnen die verschiedenen Ereignisse anzuhängen. Mein Problem ist, dass jedes Mal, wenn ich den HTML-Code von einem dieser divs neu generiere, ich alle Objekte neu erstellen muss, also habe ich eine neue Funktion recache()
erstellt, um diese Arbeit einfacher zu machen.Wie JQuery-Objekte dynamisch neu gebunden werden
Ich denke, das ist nicht die beste Vorgehensweise. Gibt es eine Möglichkeit, diese Handler am Leben zu erhalten, ohne jedes Mal diese Funktion aufrufen zu müssen, oder gibt es eine Möglichkeit, diese Objekte dynamisch erneut zu binden?
Vielen Dank!
Hier mein Code:
var Object = {
init: function() {
this.cache();
this.bindEvents();
return this;
},
cache: function() {
OBJECTS....
this.nameObject = $('#anchor');
etc..
},
recache: function() {
Objects to be recached as needed.
},
bindEvents: function() {
EVENTS attached to the objects.
this.nameObject.on('click', 'context', this.nameFunction);
},
nameFunction: function() {
#CODE....
}
}; //END Playlist (Object)
window.Object = Object.init();
I on()
Funktion in der Regel statt delegate()
verwenden, live()
oder bind()
, butI'm nicht sicher, das ist genau mein Problem.
Vielen Dank im Voraus!
Upps! Es tut uns leid, du hast Recht! Genau der Kontext der on() -Methode der fraglichen Funktionen wird zerstört, wenn ich den HTML-Code neu erzeuge. Dies ist der Grund, diese Objekte erneut cachen zu müssen. Ich fühle mich wie ein Neuling. ;) ;) VIELEN DANK!! – Alberto
Kühle Bohnen. Ich erwähne das nur, weil du neu bei SO bist, aber wenn diese Antwort geholfen hat, kannst du es mit dem Checkbox-Symbol auf der linken Seite "akzeptieren", sobald eine bestimmte Zeit verstrichen ist (15min? Kann dich nicht erinnern) –
Endlich Ich habe meine Anwendung umstrukturiert, indem ich alle Ereignisse auf die Vorfahren geändert habe, und abgesehen von einigen kleineren Problemen, die auch mit Safari gelöst wurden, funktioniert alles wie ein Zauber. Vielen Dank!! – Alberto