0Pricing
jQuery Academy · Lección

Integración de métodos públicos y callbacks

Añada métodos públicos a sus plugins para permitir la interacción externa e incorpore funciones callback para que los usuarios puedan conectarse a eventos específicos del plugin.

Integración de métodos públicos y callbacks es una lección gratuita de jQuery Academy en CoddyKit. Esta es la lección 3 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de jQuery Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de jQuery Academy incluye 3 lecciones en total.

Interactúe con sus plugins

Los buenos plugins no funcionan únicamente de forma independiente. ¡También permiten que los usuarios interactúen con ellos después de inicializarlos! En esta lección aprenderá a añadir métodos públicos para control externo y funciones de callback para reacciones personalizadas.

  • Métodos públicos: Funciones que los usuarios pueden llamar en una instancia de plugin inicializada.
  • Callbacks: Funciones que se ejecutan cuando ocurren eventos específicos dentro del plugin.

Repaso de los conceptos básicos de los plugins

Recuerde que los plugins de jQuery suelen envolverse en una Expresión de Función Ejecutada Inmediatamente (IIFE) para evitar contaminar el ámbito global. Esta estructura proporciona un espacio seguro para la lógica y las variables internas del plugin.

Desarrollaremos este patrón conocido.

(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();

¿Qué son los métodos públicos?

Un método público es una función expuesta por su plugin que puede llamarse desde fuera de su ámbito interno, incluso después de haber inicializado el plugin en un elemento.

Considérelo como un control remoto para su plugin. Puede indicarle que haga cosas como «restablecer», «actualizar» u «obtener un valor».

Implementar un método público

Para añadir métodos públicos, normalmente almacenamos los datos de instancia del plugin (incluidos sus métodos) directamente en el elemento DOM mediante el método .data() de jQuery.

Creemos un plugin sencillo de «contador» y añadamos un 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();

Llamar a métodos públicos

Una vez inicializado el plugin y almacenados sus métodos mediante .data(), puede acceder a ellos y llamarlos directamente.

La clave consiste en recuperar primero la instancia almacenada en el elemento y, después, llamar al método en esa instancia.

// 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());
});

¿Qué son los callbacks?

Las funciones de callback son funciones que se pasan al plugin y que este ejecuta en momentos concretos de su ciclo de vida o cuando ocurren determinados eventos internos.

Permiten a los usuarios «conectarse» al comportamiento del plugin y añadir su propia lógica personalizada sin modificar el código fuente del plugin.

  • Considérelas como escuchas de eventos para las acciones internas del plugin.
  • Callbacks habituales: onInit, onChange, onComplete.

Implementar un callback

Para implementar un callback, primero defínalo en las opciones predeterminadas del plugin. Después, dentro del plugin, simplemente llame a esta función cuando ocurra el evento correspondiente y pás ele cualquier dato útil.

Ampliaremos nuestro plugin de contador con un callback 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!

Pasar funciones de callback

Los usuarios pasan sus funciones de callback personalizadas directamente dentro del objeto de opciones del plugin durante la inicialización. El plugin invocará estas funciones en el momento adecuado.

Observe cómo se utiliza .call($this[0], value). Esto establece this dentro del callback como el elemento DOM y pasa el nuevo 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
});

Varios métodos y callbacks

Puede definir varios métodos públicos y distintos callbacks para gestionar diversos eventos dentro de su plugin. Esto permite crear un componente flexible y potente.

  • Los métodos públicos permiten a los usuarios dar órdenes al plugin.
  • Los callbacks permiten al plugin informar al código del usuario sobre lo que está ocurriendo.
(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();
});

Consejos sobre métodos públicos y callbacks

Al diseñar la interfaz pública de su plugin, tenga en cuenta estos consejos:

  • Nombres coherentes: Use nombres claros y descriptivos para los métodos y callbacks.
  • Gestión de errores: Compruebe que los callbacks sean realmente funciones antes de llamarlos (por ejemplo, $.isFunction(settings.onComplete)).
  • Contexto: Use .call() o .apply() para establecer el contexto de this en los callbacks, normalmente como el elemento al que se aplica el plugin.
  • Argumentos: Pase datos relevantes a los callbacks (por ejemplo, el nuevo valor o el objeto de evento).

Cuestionario sobre la interacción con plugins

Considere un plugin de jQuery inicializado en #myElement. El plugin tiene un método público llamado doSomething() y un callback onComplete.

¿Qué fragmento de código llama correctamente al método público Y pasa un callback personalizado durante la inicialización?

Repaso y próximos pasos

¡Ha aprendido a hacer que sus plugins de jQuery sean realmente interactivos y flexibles!

  • Los métodos públicos permiten que el código externo controle y consulte el plugin después de inicializarlo.
  • Los callbacks proporcionan puntos de extensión para que los usuarios incorporen lógica personalizada en respuesta a eventos internos del plugin.

Estas técnicas son fundamentales para crear plugins de jQuery sólidos, reutilizables y fáciles de usar.

Preguntas frecuentes

¿La lección «Integración de métodos públicos y callbacks» es gratis?

Sí — el texto completo de «Integración de métodos públicos y callbacks» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de jQuery Academy, actualiza a CoddyKit PRO. El curso de jQuery Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Integración de métodos públicos y callbacks»?

Añada métodos públicos a sus plugins para permitir la interacción externa e incorpore funciones callback para que los usuarios puedan conectarse a eventos específicos del plugin. Practicas jQuery Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar jQuery Academy?

No se requiere experiencia previa. jQuery Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 3.

¿Cuánto tiempo toma la lección «Integración de métodos públicos y callbacks»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de jQuery Academy?

Sí. Cada lección de jQuery Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Patrones de diseño y ámbito de plugins
  2. Creación de plugins configurables y reutilizables
  3. Integración de métodos públicos y callbacks
← Volver a jQuery Academy