Инициировать событие при изменении параметра конфигурации в плагине jQuery? Вариант или общедоступный метод?

Я работаю над следующей версией плагина jQuery для плавной прокрутки (Smooth Div Scroll). Это плагин с сохранением состояния, основанный на фабрике виджетов jQuery, поэтому состояние плагина можно изменить после его инициализации. Либо пользователь может изменить параметры конфигурации плагина, либо использовать один из общедоступных методов, которые я предоставляю.

В этом плагине у меня есть логическое значение: hotSpotScrolling (true/false). Если пользователь устанавливает для этого параметра значение true как часть параметров, предоставляемых при инициализации плагина, активируются горячие точки для прокрутки. И наоборот - инактивируется, если установлено значение false.

Если пользователь изменяет этот параметр после инициализации подключаемого модуля, мне нужно, чтобы подключаемый модуль реагировал на это изменение. Поэтому, если пользователь устанавливает для параметра hotSpotScrolling значение false, мне нужно скрыть горячие точки и деактивировать некоторые другие вещи, связанные с прокруткой горячих точек. И наоборот, если пользователь устанавливает для hotSpotScrolling значение true, мне нужно показать горячие точки и активировать некоторые другие вещи.

Но, насколько я знаю, нет никакого способа заставить jQuery-плагин реагировать на изменения параметров в соответствии с только что описанным сценарием, и я даже не уверен, что это желательно. Для меня это больше похоже на задачу для общедоступных методов? Таким образом, вместо того, чтобы изменять параметр, пользователь вызывает общедоступный метод, и внутри этого метода я пишу код, который изменяет состояние плагина.

Меня интересуют лучшие практики, когда дело доходит до выбора между изменением параметров и вызовом общедоступных методов в плагинах jQuery, и, желательно, несколько хороших примеров с кодом, который проливает свет на эту дилемму.

Заранее спасибо! /Томас


person tkahn    schedule 04.08.2011    source источник


Ответы (1)


Посмотрите, как обновленный виджет вкладок обрабатывает параметры, изменяющиеся после инициализации:

https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.tabs.js#L113-140

Обновленный аккордеон делает то же самое:

https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.accordion.js#L157-191

Это то, что вы захотите сделать.

person PetersenDidIt    schedule 04.08.2011
comment
Да, это именно то, что я ищу! Переопределяя фабрику виджетов jQuery _SetOption, я могу заставить плагин делать что-то при изменении параметров. Также см. заголовок Работа с параметрами на этой странице: блог. nemikor.com/2010/05/15/building-stateful-jquery-plugins. Спасибо! - person tkahn; 04.08.2011