jQuery plugin
Sziasztok!
szeretnék egy jquery plugint írni, és van egy kis gondom a plugin elérhetőségével.
A logikát szeretném megérteni, mert valahol az alapoknál lehetek elszállva.
adva mondjuk egy plugin:Namost az adott pluginben látom a this-ben a $.extenddel hozzáadott self -et, de már a másik hozzáadott self-et NEM.
A cél az lenne, hogy valami ilyesmi módon érhessem el:
$(akarmi).testem.testFunction() vagy a $(akarmi).testem().testFunction()
és természetesen a már "példányosított" verziót.
Ha röviden elmagyaráznátok az alapvető logikáját nem lenne rossz, vagy esetleg szívesen utána is olvasok, ha megmondjátok mire keressek lehetőleg inkább magyar nyelven.
Köszönöm szépen!
■ szeretnék egy jquery plugint írni, és van egy kis gondom a plugin elérhetőségével.
A logikát szeretném megérteni, mert valahol az alapoknál lehetek elszállva.
adva mondjuk egy plugin:
$.fn.test = function( options ) {
var self = {};
self.testszoveg = "akarmi";
self.testFunction = function( args ) { }
$.extend(this, {testem: self});
console.log( 'test', this );
}
$.fn.test2 = function( options ) {
var self = {};
self.testszoveg = "mas";
self.test2Function = function( args ) { }
$.extend(this, {testem2: self});
console.log( 'test2', this );
}
$("#aa").test();
$("#aa").test2();
A cél az lenne, hogy valami ilyesmi módon érhessem el:
$(akarmi).testem.testFunction() vagy a $(akarmi).testem().testFunction()
és természetesen a már "példányosított" verziót.
Ha röviden elmagyaráznátok az alapvető logikáját nem lenne rossz, vagy esetleg szívesen utána is olvasok, ha megmondjátok mire keressek lehetőleg inkább magyar nyelven.
Köszönöm szépen!
Különböznek
this
teljesen különböző objektum. Mivel két különböző kiválasztás eredménye. Egyébként pedig egy jQuery plugin-ben illik visszaadni athis
-t, hogy tovább lehessen folytatni a kifejezést.Két különböző?
Két különböző objektum?
Tehát amikor lefut egy $(). kiválasztás, akkor új objektum jön létre.
Van megoldás, hogy ezeket "összeforrasszuk"? vagy van valami közös pontjuk, valami híd?
gondolom a $().data() pl az, de nem tűnik elegánsnak ezt használni.
kiraktam a netre a kódot, amivel gondom van. Bár ebbe belefutottam már máskor is,
de úgy érzem itt lenne az ideje ezt megértenem. :)
itt
Egy file feltöltő, tallozót szeretnék csinálni.
az mcFileSelector végén hozzáadnám az elemhez a plugint, hogy példányosított verziója elérhető legyen.
$.extend(this, {fileManager: self});
aztán elfut az mcFileSelector.init -be, és ott ráraknám az mcFileExplorer -t,
ennek az alján concolosom ki a this -t és látszik, hogy csak az aktuális van meg.
Ez egybevág azzal amit mondtál, azonban sok plugin képes elérhetőséget biztosítani.
pl használom a DataTable -t is, és ott is elérhető funkciók vannak nyitva:
$(..).Datatable().addrow()
Szóval nyilván van valami módja, valami szintaktika.
widget
update: Sajnos nem megfelelő.
A következő esetben már látszik a hiba:
egyszerűsítve
jsfindle
azaz a console.log ból látszik, hogy nem egy példány csatolódik az adott html tag-hez,
hanem ugyan az a class csatolódik mindegyikhez.
Erre megoldás?
(function($){ $.fn.plugin1