Diszkrét JavaScript update-elt tartalomra (prototype)
Prototype-al próbálok class-onként tulajdonságokkal felruházni elemeket. Az elemek eseménykezelőit az onLoad eseménykezelője rendeli az elemekhez, például a class="ajaxUpdater" osztályba tartozókhoz így:A gondom akkor van, ha az oldalon egy részt ajaxUpdater-rel lecserélek. Az új elemek eseménykezelőit hogy állítsam be? Próbáltam az onComplet esetén meghívni valami függvényt, ami elvégzi a hozzárendelést, de nem működik (onComplet: myUpdateLoader(this.element) { ... })? Hogy kellene ezt rendesen megcsinálni?
■
Event.observe(window, 'load', myLoader, false);
function myLoader(evt) {
...
var AjaxUpdaterObject = Class.create();
AjaxUpdaterObject.prototype = {
initialize: function(element) {
this.element = $(element);
this.id = this.element.getAttribute('id');
this.url = $F(this.id+'Url');
this.myAjax = new Ajax.Updater(
this.id,
this.url,
{
method: this.element.getAttribute('method'),
parameters: $F(this.id+'Pars'),
}
);
}
}
var ajaxUpdaterElements = new Array();
$$('.ajaxUpdater').each(
function (elem, index) {
ajaxUpdaterElements.push(new AjaxUpdaterObject(elem));
}
);
}
onComplet???
Igen, elírás...
Igaziból az 'ujElemed' megtalálása volt a fő gondom, de közben rájöttem, hogy az Event.element-ből kiindulva meg tudom találni az érintett elemeket - bár még nem írtam meg, de gondolom menni fog (a $$ helyett az element.getElementsBySelector-ral, hogy csak az update-elt rész eseménykezelőit módosítsa).
Köszönöm!
delegálás
Így nem kell a dom módosítás után felprogramoznod egyesével az elemeket és ha jól csinálod, akkor elég 1 elemet felprogramozni, ráadásul ezáltal még gyorsabb is lehet a betöltődés.
Itt egy jó cikk és egy példa:
http://www.cherny.com/webdev/70/javascript-event-delegation-and-event-hanlders
Ez tényleg jó...