#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