JS не стыкуется с AJAX: HELP
На странице есть кнопка, при клике на которое всплывает модальное окно на Fancybox. JS в этом отрабатывает нормально.
Но, когда точно такую же кнопку (код точная копиия) подгружаешь через AJAX, то сколько на неё не кликай, - окно не всплывает. Такое ощущение, что JS не видит что я кликаю на кнопку ПОЧЕМУ? JS и AJAX действительно не стыкуются? |
код покажите
добавлено через 2 минуты например в jQuery есть click который с аякс не дружит, а есть .live( "click", function() { или .on( "click", function() { который работает с новыми элементами, которые выводит аякс |
Сюда:
PHP код:
PHP код:
Код HTML:
$("#wrappers").on("click", ".modalbox", function(){ Вроде должно работать, но нет. Возможно ошибка. |
Port_Artur, если коротко: у Fancybox, как и у многих плагинов, есть функция инициализации, она запускается в момент загрузки страницы и вешает на существующие элементы свои события-свойства-мишуру-гирлянды.
Если через какое-то время на странице появляется новый элемент, ему эту ерунду уже никто не вешает, а значит надо просить плагин провести инициализацию повторно. Если более подробно — надо смотреть конкретный код подключения плагина, его версию, его руководство. |
Port_Artur, если коротко: у Fancybox, как и у многих плагинов, есть функция инициализации, она запускается в момент загрузки страницы и вешает на существующие элементы свои события-свойства-мишуру-гирлянды.
Если через какое-то время на странице появляется новый элемент, ему эту ерунду уже никто не вешает, а значит надо просить плагин провести инициализацию повторно. Если более подробно — надо смотреть конкретный код подключения плагина, его версию, его руководство. |
Вот так если быть точным:
Код HTML:
$(document).ready(function( {scrolling: VISIBLE,}) { Фенсибокс V3.0.47 2017 года добавлено через 3 минуты Я так понимаю судя с ваших слов, нужно как заново повесить: PHP код:
добавлено через 20 минут Повторно повесил Фенсибокс $(".modalbox").fancybox() ; в ON Не знаю правильно ли, но так заработало: PHP код:
Ещё 1 ПРОБЛЕМА!!! В ссылке передаётся параметр id-text: Код HTML:
<a class="modalbox buttontime" href="#inline" id-text="сообщение" rel="nofollow" > Код HTML:
$("input#id-text").val($(this).attr("id-text")); Код HTML:
<input type="hidden" id="id-text" name="id-text" value="1"> В исходном коде открытого окна строка выглядит Код HTML:
<input type="hidden" id="id-text" name="id-text" value=""> добавлено через 8 часов 47 минут Вместо Код HTML:
$("#wrappers").live("click", ".modalbox", function(){ Код HTML:
$("#wrappers").on("click", ".modalbox", function(){ Не знаю в чём именно разница, но так работает и видит передаваемые через ссылку переменные. Всем спасибо за помощь Вопрос закрыт |
Цитата:
Цитата:
|
Цитата:
Уже всё получилось. Я просто не знал что на загружаемые элементы нужно заново всё вешать. |
Ещё одна из особенностей JS - "специфическая" видимость/привязка переменных ;) Вот тут иногда мозг может закипеть :)
|
Примерно так вчера и было, пока не помогли разобраться.
Сам то я JS не знаю, только благодаря примерам из Интернета и помощи знатоков что-то получается делать. |
Текущее время: 01:18. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Техническая поддержка — DevArt.PRO. Перевод: zCarot.