He creado un plugin jQuery que funciona muy bien, con la excepción de poder llamar al plugin en diferentes objetos y cada objeto conservando las opciones que se le dieron. El problema es que si llamo el plug-in en un objeto, por ejemplo:jQuery Plugin Authoring - Establecer diferentes opciones para diferentes elementos
$('#myDiv1').myPlugin({
option1: 'some text',
option2: true,
option3: 'another option value'
});
luego llamar al plug-in de nuevo en otro objeto, por ejemplo:
Entonces, si vuelvo y trato de hacer algo con # myDiv1 que las necesidades de sus opciones originales que aún estaba intacta, es decir:
$('#myDiv1').myPlugin.update();
no tendrá sus opciones originales, sino que será anulado por las opciones de # myDiv2. ¿Cuál es la forma correcta de hacer esto para que cada objeto retenga las opciones originales que se le asignaron? (Y esto es un código de ejemplo de lo que estoy haciendo en el plug-in)
(function($) {
$.fn.myPlugin = function(options) {
// build main options before element iteration
var opts = $.extend({}, $.fn.myPlugin.defaults, options);
_option1 = opts.option1;
_option2 = opts.option2;
_option3 = opts.option3;
// iterate all matched elements
return this.each(function() {
callPluginFunctions(this, opts);
});
};
....code continued....
Comprendo que esto es algún tipo de corrupción del alcance o algo así. Entonces, ¿cómo puedo obtener mis opciones para permanecer adjunto y permanecer en el alcance del objeto original (es decir, # myDiv1) que se les dio.
EDIT: Al hacer algunas investigaciones veo que puede almacenar datos en un objeto usando la función .data de jQuery, y los documentos dicen que jQuery UI lo usa extensamente. ¿Sería lo correcto hacer aquí almacenar las opciones en el objeto utilizando .data, luego, cuando se hace referencia más tarde utilizar las opciones almacenadas en .data ???
En respuesta a su edición y la respuesta correcta de reinerpost, sí, el objeto de datos es una buena forma de hacerlo. Sin embargo, consulte usando la fábrica de jQuery UI (http://jqueryui.com/docs/Developer_Guide#The_widget_factory).Lo utilicé para crear el código de la presentación de diapositivas para http://2010.newsweek.com (ver: jquery.slideshow.js) –