jQuery custom event: csak DOM elemhez lehet kötni?
Sziasztok!
Épp bütykölök egy kis tesztelő cuccot, ahol ha a megfigyelés beindul, akkor több elemnek egymástól függetlenül el kéne kezdeni ügyködni. Gondoltam, hogy a start gomra kattintva dobok egy saját eseményt, amire a beregisztrált listenerek reagálnak, így ha épp szeretnék hozzáadni valamit, akkor a "bootstrap" kódot nem kell módosítani, az új cucc is regisztrálja magát az eseményre.
Újabb probléma: jól látom, hogy jQueryben csak DOM elemhez lehet eseményt kötni? A fentihez nekem az lenne logikus, hogy 1-1 osztály listener metódusát regisztrálom, de egyenlőre úgy tűnik, hogy kénytelen vagyok valamilyen elemhez kötni ezt.
Így most kb. azt tudom elképzelni, hogy minden egyes "valami" az úgyis mondjuk egy DIV-ben lesz, így ehhez a DIV-hez bindoom az eseményt, és minden ilyen DIV-nek adok mondjuk egy "monitoringListener" classt, és a trigger()-nél meg ezt használom. Tényleg ennyire macerásan lehet csak?
Üdv,
Felhő
■ Épp bütykölök egy kis tesztelő cuccot, ahol ha a megfigyelés beindul, akkor több elemnek egymástól függetlenül el kéne kezdeni ügyködni. Gondoltam, hogy a start gomra kattintva dobok egy saját eseményt, amire a beregisztrált listenerek reagálnak, így ha épp szeretnék hozzáadni valamit, akkor a "bootstrap" kódot nem kell módosítani, az új cucc is regisztrálja magát az eseményre.
Újabb probléma: jól látom, hogy jQueryben csak DOM elemhez lehet eseményt kötni? A fentihez nekem az lenne logikus, hogy 1-1 osztály listener metódusát regisztrálom, de egyenlőre úgy tűnik, hogy kénytelen vagyok valamilyen elemhez kötni ezt.
Így most kb. azt tudom elképzelni, hogy minden egyes "valami" az úgyis mondjuk egy DIV-ben lesz, így ehhez a DIV-hez bindoom az eseményt, és minden ilyen DIV-nek adok mondjuk egy "monitoringListener" classt, és a trigger()-nél meg ezt használom. Tényleg ennyire macerásan lehet csak?
Üdv,
Felhő
Bind
.click() helyett: .bind( type, [data], fn ) így lehet több eseményt hozzácsatolni, mondjuk click-re. pl, $(this).bind("click", function(e){ a++; });
Ugyan erre lesz szükséged egyéni esemény regisztrálásnál. pl.:
$(this).bind("timeout,function() {
$sutff.calc( $(this).removeClass("timer").children("input").val() );
})
$(this).trigger('timeout');
Hasznos lehet még a .data ,
ami megoldhatja a másik topicban megfogalmazott this problémád.
jelen probléma szempontjából lényegtelen
Üdv,
Felhő
jQuery, pici, és az is marad.
Viszont könnyedén kiegészíthető. A probléma nem egyedi, mint ahogy mondtad, nem csak Te dolgozol object.prtototypal. Éppen ezért vannak apró pluginok, mint pl: Bindo, Distill , FastTrigger ,
és ha saját megoldásodat érdemesnek tartod publikálni, nem áll semmiből. A jQueryből rengeteg alapvetőnek gondolt funkció hiányzik, és hiányozni is fog. Tehát nem azoknak van, akik nem akarnak kiegészítést írni hozzá. Inkább azoknak akik jobban szeretnek valamit otthonosan felépíteni, sok felesleges sallang nélkül. (ezért van ekkora tábora.)
Éppen ezért nem állja meg a helyét az, hogy a jQuery itt-ott lassú. Összességében egy komplex webalkalmazásban mindig gyorsabb lesz, mint egy Ext. Amiben effektíve több programozást igényel az, hogy kitakarítsd a szemetet. És ez annak köszönhető, hogy sokszor ilyen alapvetések nem kerülnek bele.
Persze ezt nem te állítottad, csak olvastam pár commentben ilyesmit.
Egyébként a problémádat az új jQuery releaseben valamelyest implementálni fogják. Nézd meg a blogot!
Extjs observable
workaround
Kb. ez lett a vége most: