plugin jQuery $ .extend
-
19-09-2019 - |
Domanda
se estendo il fn
jquery (come $ .fn.extend) scrivo il mio plugin:
(function($){
$.fn.extend({
functionName : function(){
//function returns
return this.each(function(){
$(this).append("<div>text</div>");
});
}
});
})(jQuery);
quando voglio estendere jQuery namespace scrivo in questo modo:
(function($){
$.extend({
functionName : function(){
//function returns
}
});
})(jQuery);
quello che non so è come scrivere il 'ritorno' in questo caso
Soluzione
Aggiorna
Quando si sta facendo più operazioni che coinvolgono più di un selettore, si deve decidere che cosa ha più senso. Se un selettore è l'obiettivo primario, ma gli effetti di altri articoli così, scrivere come un plug-in, e restituire il risultato primario impostato in questo modo:
$.fn.myAction = function(secondarySelector){
return this.each(function(){
$(this).css('display', 'block');
$(secondarySelector).hide();
});
};
// Use:
// $(primarySelector).myAction(secondarySelector);
$("#id").myAction(".address"); // Chain continues after action
Se i selettori sono tutti uguali per importanza, quindi è sufficiente creare una funzione che non restituisce nulla o ritorna true
/ false
seconda successo.
Un altro modo per strutturare il codice:
Il metodo estendere viene utilizzato in altri ambiti OOP e, come avete dimostrato, può essere utilizzato con jQuery pure. Cosa si può trovare, però, è che molti sviluppatori jQuery optare per il più breve sintassi più evidente in questo modo:
(function($){
// The if statement allows the file to be used with
// other files that use the same shared namespace
if(!$.Namespace){
$.Namespace = { };
};
$.Namespace.Constructor = function( params ){
... code ...
};
// And for the wrapper sets ($.fn):
$.fn.functionName = function(opts){
return this.each(function(){
... code ...
});
};
})(jQuery);
Altri suggerimenti
È possibile restituire ciò che ti piace in seconda istanza. Peresempio pensare $.each()
contro $.get()
. Tuttavia, se fossi in te vorrei evitare di utilizzare questo come uno spazio dei nomi funzione - si può portare a inquinamento. Invece si shoudl prenotare questo per aggiungere il proprio spazio dei nomi sotto il namespace jquery come:
(function($){
$.extend({
myNamspace : {
functionName: function(){
// return whatever
}
}
}});
})(jQuery);