¡Tengo un problema extraño que parece que no puedo resolver! Es parte de un gran marco que estoy escribiendo, pero he escrito un código de prueba que tiene el mismo problema. Véase el siguiente:Error de tipo Javascript, no es una función
!function ($, window, undefined) {
// BASE FUNCTION
var test = function (selector, context) {
return new test.fn.init(selector, context);
};
// SELECTOR FUNCTIONS
test.fn = {
selector: undefined,
init: function (selector, context) {
// Use jQuery to build selector object
this.selector = $(selector, context);
return this;
},
// Create a popup dialog
popup: function (options) {
this.selector.dialog();
}
},
// Expose Carbon to the global object
window.test = test;
}(window.jQuery, window);
Ahora cuando utilizo el siguiente:
test('#popupLink').popup();
me sale: "emergente no es una función "TypeError de prueba (" # popupLink)". Sé que es parte de trabajo, como lo podemos hacer uso de las funciones estándar de jQuery si hago algo como:
test('#popupLink').selector.hide();
Cualquier ayuda sería muy apreciada, ya que estoy teniendo un bloqueo mental en este momento. ¡Gracias de antemano! :)
actualización
he utilizado console.log para ver el objeto devuelto, y que sólo tiene el elemento de selección, lo cual tiene sentido ya que no hizo uso de prototipo. ¿Cómo puedo arreglar eso?
Cambiar test.fn a test.prototype o test.fn.prototype – jasssonpet
He añadido "test.fn.prototype = test.fn", pero sigue sin funcionar, exactamente el mismo error :( – jleck
Usted debe asignar ventana emergente al prototipo de test.fn.init. –