Autor | Zpráva | ||
---|---|---|---|
nothanks Profil * |
#1 · Zasláno: 26. 12. 2010, 16:35:57
cjtel jsem si udelat v jquery plugin tak jsem koukal jak na to. a nejak jsem nepochopil tuto cast
http://docs.jquery.com/Plugins/Authoring#Namespacing 1(function( $ ){ (function( $ ){
var methods = {
init : function( options ) { // THIS },
show : function( ) { // IS },
hide : function( ) { // GOOD },
update : function( content ) { // !!! }
};
$.fn.tooltip = function( method ) {
// Method calling logic
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.tooltip' );
}
};
})( jQuery );
konkretne nechapu proc jsou methods vyhozene mimo samotny plugin. navic kdyz budu mit timhle zpusobem udelane dva pluginy tak si prece ty methods prepisi ne? |
||
pcmanik Profil |
#2 · Zasláno: 26. 12. 2010, 17:30:30 · Upravil/a: pcmanik
Oni niesu vyhodene mimo plugin,
(function( $ ){ (function( $ ){
( jQuery );
Toto ti oznacuje zaciatok a koniec pluginu, takze ich tam mozes mat aj milion ale nic sa nestane, resp. 1(function( $ ){ (function( $ ){
var methods = {
init : function( options ) { // THIS },
show : function( ) { // IS },
hide : function( ) { // GOOD },
update : function( content ) { // !!! }
};
$.fn.tooltip = function( method ) { };
})( jQuery ); 1(function( $ ){ (function( $ ){
var methods = {
init : function( options ) { // THIS },
show : function( ) { // IS },
hide : function( ) { // GOOD },
update : function( content ) { // !!! }
};
$.fn.lightbox = function( method ) { };
})( jQuery ); Obidva pluginy maju rovnake parametre, ale kazdy ma pri inicializacii iny nazov a to lightbox a tooltip, takze na seba nebudu mat vplyv |
||
nothanks Profil * |
#3 · Zasláno: 26. 12. 2010, 17:35:13
pcmanik:
stim bych nesouhlasil. myslim ze plugin je uzavreny v $.fn.tooltip = function( method ) {} (function( $ ){ (function( $ ){
( jQuery ); by melo byt pro to aby se daly pouzivat $ |
||
pcmanik Profil |
#4 · Zasláno: 26. 12. 2010, 20:37:54
|
||
Kcko Profil |
#5 · Zasláno: 26. 12. 2010, 21:37:03
pcmanik:
Není to celé plugin. nothanks to vysvětlil správně, je to kvůli případnému konfliktu. |
||
Kcko Profil |
#6 · Zasláno: 26. 12. 2010, 21:38:57
nothanks:
Tady na tom to možná pochopíš lépe: http://blog.jeremymartin.name/2008/02/building-your-first-jquery-plugin-that.html |
||
nothanks Profil * |
#7 · Zasláno: 26. 12. 2010, 22:00:00
Kcko:
jj diky mezi asi dalsimi 10 tutorialy jsem to take objevil. naivne jsem si myslel ze bude nejaky jeden standardizovany postup na tvorbu pluginu ale jak jsem videl tak kazdy musi mit svuj postup. kdyby tam nenapsali zrovna var methods = { var methods = { ale treba var tooltip = { var tooltip = { kdyz uz jsou to veci k tooltip pluginu tak by to bylo pro zacatecniky imho lepsi. |
||
ah01 Profil |
#8 · Zasláno: 26. 12. 2010, 23:07:07
nothanks:
methods je objekt obsahující metody pluginu, takže to jméno je zvoleno správně. Tebe to možná mate, protože nechápeš všechny důsledky zabalení celého kódu do anonymní fce. [#3], jak ostatně naznačuje i věta v dotazu [#1]: „navic kdyz budu mit timhle zpusobem udelane dva pluginy tak si prece ty methods prepisi ne“. Ne, nepřepíšou se. methods je lokální proměnná uvnitř anonymní funkce. Toto není záležitost jQuery, ale základy JavaScriptu. Podrobnosti najdeš např. ve vlákně Časté potíže, hlavně v sekci o lexikálních uzávěrách a v sekci o var. „naivne jsem si myslel ze bude nejaky jeden standardizovany postup na tvorbu pluginu“ Pokud narážíš na to, že článek na který odkazuje Kcko namespacing pluginů nezmiňuje, tak to je tím, že ten článek je z února 2008. S tímto konceptem přišlo jQuery UI jehož první verze vyšla někdy v druhé polovině 2008. Mimo to je to technika, kterou využiješ u složitých pluginů, jako je např. jQuery UI. Jako standard ber http://docs.jquery.com/Plugins/Authoring. Je to návod přímo od autorů jQuery. |
||
nothanks Profil * |
#9 · Zasláno: 27. 12. 2010, 10:49:26
ah01:
mas pravdu evidentne tedy nechapu spravne tuto cast (function( $ ){ (function( $ ){
})( jQuery ); ani na odkazech co jsi mi dal jsem ktehle konstrukci nikde nic nenasel. naivne jsem si myslel ze kdyz budu mit dva pluginy 1(function( $ ){ (function( $ ){
var methods = {
init : function( options ) { // THIS },
};
$.fn.plugin1 = function( method ) { };
})( jQuery ); a 1(function( $ ){ (function( $ ){
var methods = {
update : function( content ) { // !!! }
};
$.fn.plugin2 = function( method ) { };
})( jQuery ); tak ve vysledku ztoho bude neco takovehohle 1(function( $ ){ (function( $ ){
var methods = {
update : function( content ) { // !!! }
};
$.fn.plugin1 = function( method ) { };
$.fn.plugin2 = function( method ) { };
})( jQuery ); kdy "methods" se prepisi a budou obsahem posledniho nacitaneho pluginu. |
||
Časová prodleva: 14 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0