Extendiendo la función $.fn.init

Resuelto jleck asked hace 12 años • 2 respuestas

Estoy intentando extender jQuery con lo siguiente:

$.fn.extend({
    initCore:   $.fn.init,
    init:       function (selector, context, rootjQuery) {
        return $.fn.initCore(selector, context, rootjQuery);
    }
}),

Sin embargo, no parece funcionar correctamente y la creación de cosas simples, como una alerta al hacer clic, produce errores. ¿Alguien puede detectar el problema?

¡Gracias de antemano!

jleck avatar Jun 22 '12 03:06 jleck
Aceptado

$.fn.inites el propio constructor de clases.

Intente agregar $.fn.init.prototype = $.fnepílogos para restaurar el prototipo original.

SLaks avatar Jun 21 '2012 20:06 SLaks

Supongo que te estás perdiendo el contexto. Intentar

return $.fn.initCore.call(this, selector, context, rootjQuery);

o incluso más fácil

return this.initCore(selector, context, rootjQuery);

No, espera, inites el propio constructor. Eso significa

$.fn.initCore.call(this, selector, context, rootjQuery);
doSomeThingWith(this);

...

$.fn.init.prototype = $.fn;

o

var ob = new $.fn.initCore(selector, context, rootjQuery);
doSomeThingWith(ob);
return ob;
Bergi avatar Jun 21 '2012 20:06 Bergi