0Pricing
jQuery Academy · Aula

Integração de Métodos Públicos e Retornos de Chamada

Adicione métodos públicos aos seus plugins para interação externa e incorpore funções de retorno de chamada para permitir que os usuários se conectem a eventos específicos dos plugins.

Integração de Métodos Públicos e Retornos de Chamada é uma aula grátis de jQuery Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de jQuery Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de jQuery Academy inclui 3 aulas no total.

Interaja com seus plug-ins

Os melhores plug-ins não funcionam apenas de forma independente. Eles permitem que os usuários interajam com eles após a inicialização! Nesta lição, você aprenderá a adicionar métodos públicos para controle externo e funções de retorno de chamada para reações personalizadas.

  • Métodos públicos: funções que os usuários podem chamar em uma instância inicializada do plug-in.
  • Retornos de chamada: funções executadas quando eventos específicos ocorrem dentro do plug-in.

Revisão dos conceitos básicos de plug-ins

Lembre-se de que os plug-ins jQuery geralmente são envolvidos em uma Expressão de Função Invocada Imediatamente (IIFE) para evitar a poluição do escopo global. Essa estrutura oferece um espaço seguro para a lógica e as variáveis internas do seu plug-in.

Vamos desenvolver esse padrão familiar.

(function($) {
  $.fn.myPlugin = function(options) {
    // Default settings
    var settings = $.extend({}, $.fn.myPlugin.defaults, options);

    return this.each(function() {
      var $this = $(this); // The element the plugin is applied to
      // Plugin logic goes here
      console.log("Plugin initialized on: " + $this.attr('id'));
    });
  };

  // Default options
  $.fn.myPlugin.defaults = {
    message: "Hello from plugin!"
  };
})(jQuery);

// How to use (in HTML <div id="myElement"></div>):
// $('#myElement').myPlugin();

O que são métodos públicos?

Um método público é uma função exposta pelo seu plug-in que pode ser chamada de fora do escopo interno, mesmo depois que o plug-in tenha sido inicializado em um elemento.

Pense nele como um controle remoto para o seu plug-in. Você pode instruí-lo a fazer coisas como "resetar", "atualizar" ou "obter um valor".

Implementando um método público

Para adicionar métodos públicos, normalmente armazenamos os dados da instância do plug-in (incluindo seus métodos) diretamente no elemento DOM usando o método .data() do jQuery.

Vamos criar um plug-in simples de "contador" e adicionar um método getValue.

(function($) {
  $.fn.counterPlugin = function(options) {
    var settings = $.extend({
      initialValue: 0
    }, options);

    return this.each(function() {
      var $this = $(this);
      var value = settings.initialValue;

      var methods = {
        getValue: function() {
          return value;
        },
        increment: function() {
          value++;
          $this.text(value); // Update display
        },
        init: function() {
          $this.text(value); // Initial display
        }
      };

      // Store methods on the element's data
      $this.data('counterPlugin', methods);
      methods.init(); // Initialize display
    });
  };
})(jQuery);

// HTML: <div id="myCounter"></div>
// Usage: $('#myCounter').counterPlugin();
// Later: $('#myCounter').data('counterPlugin').getValue();

Chamando métodos públicos

Depois que o plug-in for inicializado e seus métodos forem armazenados por meio de .data(), você poderá acessá-los e chamá-los diretamente.

O ponto principal é recuperar primeiro a instância armazenada no elemento e, em seguida, chamar o método nessa instância.

// Assume counterPlugin from previous scene is loaded

// HTML: <div id="myCounter"></div>

$(document).ready(function() {
  // Initialize the plugin
  $('#myCounter').counterPlugin({ initialValue: 5 });

  // Get the plugin instance
  var counterInstance = $('#myCounter').data('counterPlugin');

  // Call public methods
  console.log("Current value: " + counterInstance.getValue());
  counterInstance.increment();
  console.log("After increment: " + counterInstance.getValue());
});

O que são retornos de chamada?

Funções de retorno de chamada são funções que você passa ao plug-in, e que ele executa em momentos específicos durante seu ciclo de vida ou quando determinados eventos internos ocorrem.

Elas permitem que os usuários se conectem ao comportamento do seu plug-in e adicionem sua própria lógica personalizada sem modificar o código-fonte do plug-in.

  • Pense nelas como ouvintes de eventos para ações internas do plug-in.
  • Retornos de chamada comuns: onInit, onChange, onComplete.

Implementando um retorno de chamada

Para implementar um retorno de chamada, primeiro defina-o nas opções padrão do seu plug-in. Em seguida, dentro do plug-in, basta chamar essa função quando o evento relevante ocorrer, passando os dados úteis.

Vamos estender nosso plug-in de contador com um retorno de chamada onChange.

(function($) {
  $.fn.counterPlugin = function(options) {
    var settings = $.extend({
      initialValue: 0,
      onChange: function(newValue) {} // Default empty callback
    }, options);

    return this.each(function() {
      var $this = $(this);
      var value = settings.initialValue;

      var methods = {
        getValue: function() {
          return value;
        },
        increment: function() {
          value++;
          $this.text(value);
          // Call the callback when value changes
          settings.onChange.call($this[0], value); 
        },
        init: function() {
          $this.text(value);
        }
      };

      $this.data('counterPlugin', methods);
      methods.init();
    });
  };
})(jQuery);

// Usage: See next scene!

Passando funções de retorno de chamada

Os usuários passam suas funções de retorno de chamada personalizadas diretamente no objeto de opções do plug-in durante a inicialização. Em seguida, o plug-in invocará essas funções no momento apropriado.

Observe como .call($this[0], value) é usado. Isso define this dentro do retorno de chamada como o elemento DOM e passa o novo valor como argumento.

// Assume counterPlugin with onChange callback is loaded

// HTML: <div id="myCounter"></div>

$(document).ready(function() {
  $('#myCounter').counterPlugin({
    initialValue: 10,
    onChange: function(newValue) {
      console.log("Counter changed to: " + newValue + " on element: " + this.id);
      if (newValue % 2 === 0) {
        $(this).css('color', 'blue');
      } else {
        $(this).css('color', 'red');
      }
    }
  });

  var counterInstance = $('#myCounter').data('counterPlugin');
  counterInstance.increment(); // Triggers callback
  counterInstance.increment(); // Triggers callback
});

Vários métodos e retornos de chamada

Você pode definir vários métodos públicos e diversos retornos de chamada diferentes para lidar com vários eventos dentro do seu plug-in. Isso cria um componente flexível e poderoso.

  • Os métodos públicos permitem que os usuários comandem o plug-in.
  • Os retornos de chamada permitem que o plug-in informe ao código do usuário o que está acontecendo.
(function($) {
  $.fn.advancedCounter = function(options) {
    var settings = $.extend({
      initial: 0,
      onIncrement: null, // New callback
      onDecrement: null, // New callback
      onReset: null      // New callback
    }, options);

    return this.each(function() {
      var $this = $(this);
      var value = settings.initial;

      var methods = {
        getValue: function() { return value; },
        increment: function() {
          value++;
          $this.text(value);
          if ($.isFunction(settings.onIncrement)) {
            settings.onIncrement.call($this[0], value);
          }
        },
        decrement: function() {
          value--;
          $this.text(value);
          if ($.isFunction(settings.onDecrement)) {
            settings.onDecrement.call($this[0], value);
          }
        },
        reset: function() {
          value = settings.initial;
          $this.text(value);
          if ($.isFunction(settings.onReset)) {
            settings.onReset.call($this[0], value);
          }
        },
        init: function() { $this.text(value); }
      };

      $this.data('advancedCounter', methods);
      methods.init();
    });
  };
})(jQuery);

// HTML: <div id="myAdvancedCounter"></div>
$(document).ready(function() {
  $('#myAdvancedCounter').advancedCounter({
    initial: 100,
    onIncrement: function(v) { console.log("Inc: " + v); },
    onReset: function(v) { console.log("Reset to: " + v); }
  });
  var inst = $('#myAdvancedCounter').data('advancedCounter');
  inst.increment();
  inst.reset();
});

Dicas sobre métodos públicos e retornos de chamada

Ao projetar a interface pública do seu plug-in, tenha estas dicas em mente:

  • Nomenclatura consistente: use nomes claros e descritivos para métodos e retornos de chamada.
  • Tratamento de erros: verifique se os retornos de chamada são realmente funções antes de chamá-los (por exemplo, $.isFunction(settings.onComplete)).
  • Contexto: use .call() ou .apply() para definir o contexto de this dos retornos de chamada, geralmente como o elemento ao qual o plug-in foi aplicado.
  • Argumentos: passe dados relevantes aos retornos de chamada (por exemplo, o novo valor ou o objeto de evento).

Questionário sobre interação com plug-ins

Considere um plug-in jQuery inicializado em #myElement. O plug-in tem um método público chamado doSomething() e um retorno de chamada onComplete.

Qual trecho de código chama corretamente o método público E passa um retorno de chamada personalizado durante a inicialização?

Recapitulação e próximos passos

Você aprendeu a tornar seus plug-ins jQuery realmente interativos e flexíveis!

  • Os métodos públicos permitem que o código externo controle e consulte seu plug-in depois que ele é inicializado.
  • Os retornos de chamada oferecem pontos de extensão para que os usuários insiram lógica personalizada em resposta a eventos internos do plug-in.

Essas técnicas são fundamentais para criar plug-ins jQuery robustos, reutilizáveis e fáceis de usar.

Perguntas Frequentes

A aula “Integração de Métodos Públicos e Retornos de Chamada” é grátis?

Sim — o texto completo de “Integração de Métodos Públicos e Retornos de Chamada” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de jQuery Academy, atualize para CoddyKit PRO. O curso de jQuery Academy inclui 3 aulas no total.

O que vou aprender em “Integração de Métodos Públicos e Retornos de Chamada”?

Adicione métodos públicos aos seus plugins para interação externa e incorpore funções de retorno de chamada para permitir que os usuários se conectem a eventos específicos dos plugins. Você pratica jQuery Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar jQuery Academy?

Nenhuma experiência prévia é necessária. jQuery Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.

Quanto tempo leva a aula “Integração de Métodos Públicos e Retornos de Chamada”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de jQuery Academy?

Sim. Cada aula de jQuery Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Padrões de Design e Escopo de Plugins
  2. Criação de Plugins Configuráveis e Reutilizáveis
  3. Integração de Métodos Públicos e Retornos de Chamada
← Voltar para jQuery Academy