Executar métodos de plugins diretamente
Olá pessoal!
Imaginem um plugin para executar no submit dos formulários com uima estrutura assim:
(function($) {
"use strict";
// Configurações do plugin
var settings = {
mensagem: 'Mensagem padrão',
};
// Métodos do plugin
var methods = {
init: function(options) {
settings = $.extend(settings, options);
// Executa o método 'show_message' no submit do formulário
this.on("submit", methods.show_message);
return this;
},
show_message: function(msg) {
// Se nenhuma mensagem for informada via parâmetro, pegamos a mensagem definida no default do plugin
var text = (msg || settings.mensagem);
alert(text)
}
};
//
// Execução do plugin
// ----------------------------------------------------------------
// 1. Se nenhum método específico for informado, executa o 'init'
// 2. Se o método executado não existir, retorna o erro
//
$.fn.meuPlugin = function(config) {
if(methods[config]) {
return methods[config].apply(this, Array.prototype.slice.call(arguments, 1));
} else if(typeof config === 'object' || !config) {
return methods.init.apply(this, arguments); // Default to "init"
} else {
$.error('Method ' + config + ' does not exist on jQuery.formValidation!');
}
};
})(jQuery);
Como eu faço para executar o método 'show_message' de qualquer lugar? Por exemplo, se eu quisesse executar esse método no click de algum link, como eu deveria montar o meu JS?
$('a').click(function() {
// como eu chamo o plugin aqui passando uma mensagem personalizada para o método 'show_message'?
$.meuPlugin().show_message('mensagem customizada');
});
Tentei dessa forma acima mas não funciona... =/
É possível fazer isso? De que forma?
Obrigado!
Discussão (0)
Carregando comentários...