Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Paulo de Tarso F. M.

Executar métodos de plugins diretamente

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.