Bonjour
j'ai acheté ce bouquin sur le développement de plugins jQuery et je suis un peu rebuté par l'approche abstraite de l'auteur et le manque de précisions qu'il apporte...
voici le squelette qu'il propose au début pour un plugin nommé helloWorld.
ça fonctionne, bien sur, en l'appelant par exemple sur un paragraphe de cette façon: $('p').helloWorld();
Maintenant c'est la fon du code que je ne comprends pas, dans cette partie:
que vient faire le paramètre method, dans $.fn.helloWorld = function( method ) ??
puisque j'invoque le plugin sans paramètre, est ce le 1er else qui s'applique ? ( return methods.init.apply( this, arguments );)
dans tous les autres exemples de plugin jQuery que j'ai pu trouver, tout le code est à la suite du $.fn.nomDuPLugin = function ... etc
edit : le code s'affiche mal, voici la fin
$.fn.helloWorld = function( method ) {
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.helloWorld' );
}
};
le forum a rajouté 'smiley' dans le code, je sais pas pourquoi
Modifié par lionel_css3 (04 May 2013 - 17:12)
j'ai acheté ce bouquin sur le développement de plugins jQuery et je suis un peu rebuté par l'approche abstraite de l'auteur et le manque de précisions qu'il apporte...
voici le squelette qu'il propose au début pour un plugin nommé helloWorld.
(function( $, window ) {
var methods = {
init : function( options ) {
var defaults = {};
options = $.extend( defaults, options );
return this.each(function() {
var $this = $(this),
data = $this.data( 'helloWorld' );
// If the plugin hasn't been initialized yet
if ( ! data ) {
$this.data( 'helloWorld', {
target : $this
});
methods.print.apply( this );
}
});
},
destroy : function() {
$(window).off( '.helloWorld' );
return this.each(function() {
var $this = $(this),
data = $this.data( 'helloWorld' );
$this.removeData( 'helloWorld' );
});
},
print : function() {
var $this = $(this);
$this.text( 'Hello World!' );
}
};
$.fn.helloWorld = function( method ) {
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.helloWorld' );
}
};
})( jQuery, window );
ça fonctionne, bien sur, en l'appelant par exemple sur un paragraphe de cette façon: $('p').helloWorld();
Maintenant c'est la fon du code que je ne comprends pas, dans cette partie:
$.fn.helloWorld = function( method ) {
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.helloWorld' );
}
};
que vient faire le paramètre method, dans $.fn.helloWorld = function( method ) ??
puisque j'invoque le plugin sans paramètre, est ce le 1er else qui s'applique ? ( return methods.init.apply( this, arguments );)
dans tous les autres exemples de plugin jQuery que j'ai pu trouver, tout le code est à la suite du $.fn.nomDuPLugin = function ... etc
edit : le code s'affiche mal, voici la fin
$.fn.helloWorld = function( method ) {
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.helloWorld' );
}
};
le forum a rajouté 'smiley' dans le code, je sais pas pourquoi
Modifié par lionel_css3 (04 May 2013 - 17:12)