встроенное цветовое поле удаляет содержимое встроенного div при закрытии

#javascript #jquery #colorbox

#javascript #jquery #цветовое поле

Вопрос:

У меня есть цветовое поле, показывающее встроенный элемент DOM.

При первом отображении colorbox все работает нормально, но если я закрою его и попытаюсь открыть снова, это не сработает.

При создании colorbox дочерние элементы #my-content-div удаляются, а в #my-content-div добавляется display: none, и цветовое поле отображается нормально. Но содержимое #my-content-div не учитывается.

Вот мой HTML:

 <div style="display: none;">
        <div id="my-content-div">
            My content!!
        </div>
</div>

<input type="button" id="show-my-content" value="Click to show my content">
  

мой JS:

 $(document).ready(function () {
    $('#show-my-content').live('click', function(){
        $.colorbox({
            inline: true,
            href: "#my-content-div"
        });
    });
});
  

Комментарии:

1. активное использование для привязки js связано с используемой версией jquery. Я не могу изменить это для этого проекта:-(

Ответ №1:

попробуйте изменить .live() на .on

 $(document).ready(function () {
    $('#show-my-content').on('click', function(){
        $.colorbox({
            inline: true,
            href: "#my-content-div"
        });
    });
});
  

Начиная с jQuery 1.7, метод .live() устарел. Используйте .on() для подключения обработчиков событий. Пользователи старых версий jQuery должны использовать.делегировать() предпочтительнее .live().

src: jQuery .live()

Комментарии:

1. Спасибо, Кевин. В этом проекте используется старая версия jquery. Делегирование не работает (не создает привязку js). Кстати, ‘on’ здесь не проблема, потому что colorbox открывается в первый раз, а во второй раз создается colorbox, но с пустым элементом. А именно, привязка js работает 🙂

2. похоже, не удается воспроизвести проблему, вот мой код, если вы нажмете вкладку настроек в поле javascript и установите ФРЕЙМВОРКИ и РАСШИРЕНИЯ для более старого доступного jQuery: jsfiddle