У меня есть странная проблема, которую я просто не могу решить! Это часть большой структуры, которую я пишу, но я написал некоторый тестовый код, который имеет ту же проблему. Смотрите следующее:Javascript Type Ошибка, не является функцией
!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);
Теперь, когда я использую следующее:
test('#popupLink').popup();
я получаю: "всплывающее окно не является функцией "TypeError тест (" # popupLink)". Я знаю, что это частично работает, как я могу сделать использовать стандартные функции JQuery, если я делаю что-то вроде:
test('#popupLink').selector.hide();
Любая помощь будет высоко ценится, так как у меня ментальный блок прямо сейчас. Спасибо заранее! :)
Update
Я использовал console.log для просмотра возвращаемого объекта, и он имеет только элемент селектора, который имеет смысл, поскольку я не использовал прототип. Как я могу это исправить?
Изменить test.fn на test.prototype или test.fn.prototype – jasssonpet
Я добавил «test.fn.prototype = test.fn», но он все еще не работает, точно такая же ошибка :( – jleck
You должен назначить всплывающее окно прототипу test.fn.init. –