Ho un po 'di strano problema, che non riesco a risolvere! Fa parte di un grande framework che sto scrivendo, ma ho scritto un codice di test che ha lo stesso problema. Vedere il seguente:Javascript Type Error, non è una funzione
!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);
Ora, quando io uso il seguente:
test('#popupLink').popup();
ottengo: "popup non è una funzione "TypeError di prova (" # popupLink)". So che è in parte di lavoro, come posso fare utilizzare le funzioni standard di jQuery se faccio qualcosa di simile:
test('#popupLink').selector.hide();
Qualsiasi aiuto sarebbe molto apprezzato, come io sto avendo un blocco mentale in questo momento. Grazie in anticipo! :)
Aggiornamento
ho usato console.log per visualizzare l'oggetto restituito, e ha solo l'elemento selettore in, che ha senso come non ho usato prototipo. Come posso ripararlo?
Modificare test.fn in test.prototype o test.fn.prototype – jasssonpet
Ho aggiunto "test.fn.prototype = test.fn", ma non funziona ancora, esattamente lo stesso errore :( – jleck
You deve assegnare un popup al prototipo di test.fn.init. –