Нужен ли экземпляру Fancybox метод повторной инициализации?

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

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

Я инициализирую Fancybox в DOM Ready jQuery следующим образом:

$(".fancybox").fancybox();

Элемент(ы) HTML выглядит следующим образом:

<a class="fancybox" rel="group" href="http://localhost/myimages/image-1.jpg"></a>
<a class="fancybox" rel="group" href="http://localhost/myimages/image-2.jpg"></a>

Я использую FancyBox версии 2. Есть предложения или комментарии?


person Theunis    schedule 13.05.2015    source источник
comment
Теоретически вам не нужно ничего делать после удаления контента, так как fancybox v2.x поддерживает метод live для динамически добавляемого/удаляемого контента, но это зависит от того, что вы понимаете под удалением контента и как вы это делаете jsfiddle.net/9g1onkvk   -  person JFK    schedule 14.05.2015
comment
@JFK, я фактически удалил и добавил новые элементы с помощью AJAX. Мне показалось, что использование атрибута rel=group не обновляет «индекс» элементов в созданной мной среде. После добавления/удаления нескольких элементов он не перелистывался в хронологическом порядке при нажатии кнопки навигации. Однако ваш JSFiddle, использующий атрибут rel=gallery, делает именно то, что мне нужно. Спасибо.   -  person Theunis    schedule 14.05.2015


Ответы (1)


Fancybox 2 не включает методы уничтожения или обновления.

По этой причине вам нужно снова запустить метод Fancybox. Но обратите внимание, что вы должны сначала использовать метод .unbind и удалить все события в элементах, прежде чем повторно инициализировать Fancybox. См. Как уничтожить Fancybox? о том, как имитировать метод уничтожения.

Короткий ответ: обновите DOM, отмените привязку события ко всем методам, а затем, наконец, выполните повторную привязку, снова вызвав метод Fancybox.

person James    schedule 13.05.2015
comment
Теоретически вам не нужно ничего делать после удаления контента, поскольку fancybox v2.x поддерживает метод live для динамически добавляемого/удаляемого контента, поэтому повторный запуск метода fancybox является излишним jsfiddle.net/9g1onkvk - person JFK; 14.05.2015
comment
@JFK Я должен был сначала проверить свою теорию на скрипке. Спасибо, что поделились, сегодня я узнал кое-что новое :) - person James; 14.05.2015