2016-11-01 2 views
-1

Я работаю над листинговой страницей продукта. infinite scroll Проблема в том, что при загрузке новой страницы событие jQuery on click на загруженной странице не будет выполняться, когда пользователь нажмите «добавить в корзину». скрипт работал бы, если бы он был загружен с помощью jquery load(). но бесконечный свиток использует что-то еще, как я не знаю.Как выполнить Javascript на загруженной странице с бесконечным прокруткой

$(document).ready(function() { 
    jQuery_1_6_1('#mycontent').infinitescroll({ 
    navSelector: "#mynext:last", 
    nextSelector: "#mynext:last", 
    itemSelector: "#mycontent", 
    debug: false, 
    dataType: 'html', 
    maxPage: <?php echo $pages_load;?>, 
    path: function(index) { 
     return "pages/index" + index + ".html"; 


     } 
     // appendCallback : false, // USE FOR PREPENDING 
    }, function(newElements, data, url) { 

    }); 
}); 
+0

Вы видите ошибки в javascript-консоли? Это не работает, это не очень полезно. – Robbert

+0

ошибки не видно, работает, если я использую обычную нагрузку для загрузки содержимого, но если вы используете бесконечный прокрутки, нет способа – Ekumahost

+0

Просто используйте делегированный обработчик событий, прикрепленный к 'document', загруженный один раз при запуске, для обработки щелкните событие. Они будут по-прежнему запускать элементы, загруженные позже. В этом случае это также поможет показать код обработчика кликов :) –

ответ

2

От моего комментария: Просто используйте делегированное обработчик событий, который прилагается к документу, загружаемый один раз при запуске, чтобы обработать событие щелчка. Они будут по-прежнему запускать элементы, загруженные позже.

Если предположить, что добавить в корзину кнопки имеют класс «AddToCart» вы могли бы сделать что-то вроде этого:

$(document).on('click', '.addtocart', function(){ 
    // handle click here 
}); 

Он работает путем передачи события прослушивания элемента-предка (например, document), то он применяется селектор jquery к элементам в цепочке пузырьков, тогда он применяет вашу функцию события к соответствующим элементам, вызвавшим событие.

Результатом делегированных событий является то, что элементы не должны существовать при регистрации события, но только на время события.

+1

Это правильная реализация. Поиск «динамических обработчиков событий» на SO приведет к около миллиарда ответов, говорящих об этом. – rob

+0

спасибо за ваш ответ GoneCoding, этот метод не работает, потому что его плагин «бесконечного прокрутки» мы говорим. Я использовал $ («# mycontent»). load (.... to – Ekumahost

+0

@Ekumahost: Это будет работать с любым плагином с бесконечным прокруткой *, потому что события щелчка затем делегируются *, если вы разместите свой 'щелчок', чтобы загрузить его и он работает, но если содержимое загружено бесконечной прокруткой, оно не будет работать. код события, как было запрошено ранее, я покажу вам, как это сделать. :) –

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