Je crée un plugin JQuery qui est assez important dans la portée. En fait, le plugin est techniquement composé de quelques plugins qui travaillent tous ensemble.
$('#example').foo()
$('#other_example').foo.bar()
4 Réponses :
Eh bien, je suis sûr qu'il y a de nombreuses façons de cuire ce chat. La bibliothèque de l'interface utilisateur JQuery utilise un motif comme celui-ci:
// initialize a dialog window from an element:
$('#selector').dialog({});
// call the show method of a dialog:
$('#selector').dialog('show');
Personnellement, je crois que cette façon d'être un hack "sale" en raison du fait qu'ils ne pouvaient pas utiliser $ ("# sélecteur"). Dialogue (). Afficher (), mais c'est une solution alternative de le faire.
dès que vous utilisez J'ai remarqué dans des plugins de JQuery UI (comme SHITABLES) où vous appelez des fonctions comme: p> Si vous faites quelque chose comme ça - vous pouvez prolonger JQuery lui-même: P> $. fn.foo.bar () code> - this code> pointe sur $. fn.foo code>, lequel est ce que vous attendez en JavaScript ( ceci code> étant l'objet que la fonction est appelée.) $.foo_plugin = {
bar: function() {},
baz: function() {}
}
$.fn.foo = function(opts) {
if (opts == 'bar') return $.foo_plugin.bar.call(this);
if (opts == 'baz') return $.foo_plugin.baz.call(this);
}
Je n'avais jamais regardé la bibliothèque d'Ui JQuery avant. Mais c'est une solution très intéressante et applicable. Merci.
Je sais que cela a déjà été répondu mais j'ai créé un plugin qui fait exactement ce que vous voulez:
http://code.google.com/p/jquery-plugin-dev/source/browse/trunk/jquery.plugin.js a > P> J'ai inclus un petit exemple ci-dessous, mais consultez ce poste de groupe JQuery Dev pour un exemple plus approfondi: http://groups.google.com/group/jquery-dev/browse_thread/thread / 664CB89B43CCB92C / 72CF730045D4333A? HL = EN & Q = Structure + Plugin + Coureur # 72CF730045D4333A P> Il vous permet de créer un objet avec autant de méthodes que vous souhaitez: P> $(someElement).myPlugin().alertHtml();
Je suis fan du motif que j'ai vu sur Eric Martin's SimpleModal . Cela fonctionne bien pour quand je ne joue pas sur des éléments DOM - dans ce cas, une enveloppe utilise localtstorage.
De cette façon, je peux facilement faire référence au constructeur: p>
;(function($){
/* Variables I'll need throghout */
var ls;
var supported = true;
if (typeof localStorage == 'undefined' || typeof JSON == 'undefined') {
supported = false;
} else {
ls = localStorage;
}
/* Make the methods public */
$.totalStorage = function(key, value, options){
return $.totalStorage.impl.init(key, value);
}
$.totalStorage.setItem = function(key, value){
return $.totalStorage.impl.setItem(key, value);
}
$.totalStorage.getItem = function(key){
return $.totalStorage.impl.getItem(key);
}
/* Object to hold all methods: public and private */
$.totalStorage.impl = {
init: function(key, value){
if (typeof value != 'undefined') {
return this.setItem(name, value);
} else {
return this.getItem(name);
}
},
setItem: function(key, value){
if (!supported){
$.cookie(key, value);
return true;
}
ls.setItem(key, JSON.stringify(value));
return true;
},
getItem: function(key){
if (!supported){
return this.parseResult($.cookie(key));
}
return this.parseResult(ls.getItem(key));
},
parseResult: function(res){
var ret;
try {
ret = JSON.parse(res);
if (ret == 'true'){
ret = true;
}
if (ret == 'false'){
ret = false;
}
if (parseFloat(ret) == ret){
ret = parseFloat(ret);
}
} catch(e){}
return ret;
}
}})(jQuery);