JQuery деконструкторы для плагинов? - PullRequest
0 голосов
/ 16 ноября 2009

Я использую плагин Galleria внутри плагина Accordion, чтобы отображать изображения очень круто. Однако возникает проблема, когда я открываю новую вкладку (в аккордеоне), а затем возвращаюсь на вкладку галереи. Это приводит к повторной инициализации галереи, что приводит к ее отказу.

Мне было интересно, есть ли способ __deconstruct () для плагина, чтобы его можно было повторно инициализировать при необходимости, не вызывая проблем?

$('.haccordion .header').click(function()
{
   /* ---- Gallery Code ---- */
   if ($(this).find('div').attr('title') == 'photogallery')
   {
      $('.gallery').galleria();

Если я инициализирую плагин в document.load (без проверки, для какой вкладки открывается), он загружает плагин, но он довольно глючный. Не загружаются изображения, не могут щелкать объекты и т. Д. Если я перезагружаю плагин, когда div.photogallery, это просто вызывает сбой в целом. Не загружается.

Итак, я предполагаю, что единственный способ преодолеть это - как-то убить плагин, а затем повторно инициализировать его?

1 Ответ

0 голосов
/ 16 ноября 2009

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

Когда вы повторно инициализируете плагин, он будет перезаписывать свои собственные изменения в коде, вызывая дублирование, что приводит к конфликту и другим проблемам. Чтобы повторно инициализировать плагин, вам нужно будет сохранить копию затронутого контента, прежде чем плагин будет инициализирован в первый раз, чтобы вы могли восстановить эту часть кода до исходного состояния, прежде чем повторно инициализировать плагин.

Однако, если плагин добавляет что-то в область окна, вы не сможете восстановить это, восстановив часть кода. Либо вам придется выяснить, что делает плагин, чтобы вы могли отменить его, либо вам придется перезагрузить страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...