Вызывать событие при изменении параметра конфигурации в плагине jQuery? Вариант или публичный метод? - PullRequest
1 голос
/ 04 августа 2011

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

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

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

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

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

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

1 Ответ

1 голос
/ 04 августа 2011

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

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

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

...