2016-06-04 3 views
-2

У меня есть простой скрипт, который Js получает фоны из следующих элементов: .он() должным образом не работает с динамическим контентом

<ul class="vk_image_grid"> 
 
    \t \t <li style="background-image: url(https://name.com/image1.jpg)" class="block"> 
 
    \t \t </li> 
 
    \t \t <li style="background-image: url(https://name.com/image2.jpg)" class="block"> 
 
    \t \t </li> 
 
    \t \t <li style="background-image: url(https://name.com/image3.jpg)" class="block"> 
 
    \t \t </li> 
 
    \t </ul> 
 
<script> 
 
\t $("ul li").on("click", function() { 
 
\t \t var bg = $(this).css('background-image'); 
 
\t \t alert(bg); 
 
</script>

Он прекрасно работает с двумя первыми li, которые генерируются по php. Но он не показывает фон третьего li, который сгенерирован другим сценарием jQuery. Как я могу исправить проблему?

+0

Вы искали способ привязки обработчика событий к динамическому элементу? Не похоже. – nicael

+0

'$ (" body "). On (" click "," ul li ", function() {// ...' – chiliNUT

+0

'on()' имеет 2 подписи. Обратите внимание на целевую подпись делегата. что главный селектор должен существовать, и вы добавляете целевой аргумент для делегирования – charlietfl

ответ

-3

Третий элемент li, кажется, сгенерирован после запуска $("ul li"). Поэтому обработчик события не будет прикреплен к третьему элементу li.

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

Для более точного уточнения вам необходимо предоставить более подробную информацию о вашем коде.

+1

Плохой ответ. Должно быть комментарий – Li357

+1

Нет необходимости в подробностях ... делеция делегирования обрабатывает оба сценария. Сдвиг - это недостаток очевидного и более общего подхода делегирования – charlietfl

Смежные вопросы