Si vous avez un nombre variable de plugins jQuery du format:Comment appliquez-vous une fonction jquery avec le nom de la fonction en paramètre?
(function($){
$.fn.toolSet_themeOne = function() {
// params
};
})(jQuery);
(function($){
$.fn.toolSet_themeTwo = function() {
// params
};
})(jQuery);
Lorsque la définition de chaque plug-in n'est pas garanti d'être le même et est susceptible de contenir un certain degré de variation de nom après le trait de soulignement, comment pourrait- ceux-ci soient appliquées dans une situation telle que celle-ci:
var themeApply = function (jQueryCollection, objSettings, pluginName) {
// this does not work and reports pluginName is not a function
jQueryCollection.pluginName(objSettings);
// $.fn[pluginName] is reported as a function
};
Je pensais utiliser another question comme guide, mais ne voient pas comment la portée correctement. Tout pointeur serait grandement apprécié.
Merci :)
EDIT: Pour ceux qui se demandent ce que la fonction est à l'intérieur, ceci est un exemple (appris une autre réponse SO pour laquelle je ne peux pas trouver un refrence immédiat:
(function($){
$.fn.toolSet_themeOne = function() {
var methods = [
update: update
];
var init = function (options) {
// normal jquery initialisation here
};
var update = function (data) {
// do something with data
// if not initialising, but calling after initialisation
};
// what do we do on initialisation?
if(arguments.length > 0) {
if('string' === typeof(arguments[0]) && 'undefined' !== typeof(methods[arguments[0]])) {
var args = Array.prototype.slice.call(arguments);
args = args.shift();
methods[arguments[0]].apply(this,args);
} else if('object' === typeof(arguments[0])) {
init.apply(this, arguments);
}
} else {
init.apply(this, arguments);
}
return this;
};
})(jQuery);
Salut Yade, j'essaie 2 options pour le moment, la vôtre d'abord avec un exemple: $ ('# tools') [pluginName] (objSettings), et cette seconde: $ .fn [ pluginName] .app ly ($ ('# tools'), objSettings); Je rapporterai dans un moment. – MyStream
[~ quelques minutes plus tard ~] J'ai essayé de me connecter pour vous donner un score - ID ouvert ne fonctionnait pas - Les deux solutions ci-dessus semblent fonctionner - vous étiez sur place. Je ne comprends pas comment ça marche - mais ça marche pour moi :) Merci Yads! – MyStream
@ArcaneErudite Aucun problème, la façon dont vous l'appeliez était de trouver une méthode appelée pluginName sur l'objet jQueryCollection. C'est de la même manière que vous pouvez accéder à une propriété/méthode d'objet en disant obj.property ou obj ["property"] – Vadim