Вы не можете получить доступ к настройкам в функции compSlider
, потому что в вашем примере они определены в init()
, что делает их локальными для этой функции.Если вы переместили объявление в область действия:
$.fn.compSlider = function( method, options ) {
var settings = $.extend( {}, defaults, options );
};
Тогда вы сможете получить к ней доступ.Или достаточно просто определить его (var settings;
) в compSlider и удалить var
в init()
.
Обновление:
В ответ на ваш комментарий, да, извините, забыл опроблема № 2.Как таковой, вы не сможете получить доступ к настройкам для каждого объекта плагина, потому что вы не можете «опуститься» в области видимости.Другими словами, вы не можете получить доступ к локальной переменной функции извне этой функции.И это то, что является настройками, локальными для функции compSlider
(если вы используете предложенную мной структуру), они имеют меньшую область действия с точки зрения вашей функции opt()
.
Вы можете, изКонечно, всегда идти в прицел.Чтобы достичь этого, вы можете установить переменную в глобальном пространстве плагина, которая хранит ссылки на все созданные объекты.
var compSliderObjects = [];
$.fn.compSlider = function( method, options ) {
//store objects in compSliderObjects
};
Однако это всего лишь идея, и вам все равно нужно выяснить, как вы хотитечтобы получить доступ к compSliderObjects и вытащить правильные настройки.Будет ли у каждого объекта уникальный идентификатор?Если это так, массив объектов ({id: 2, settings: data}
).Если нет, вам нужно выяснить, как вы хотите уникально идентифицировать их и извлечь их из массива.
Кроме того, вам действительно нужен глобальный доступ к ним?Это меньше работы и кода, чтобы просто вызвать объект и получить настройки (как показано на скрипке).