JQuery запустить функцию на элементе, загруженном через AJAX
У меня есть проект, который загружается в ответах на сообщение через функцию js:
$('div.discussion_content').each( function() {
discussion.loadDiscussion($(this));
});
Он отлично работает при загрузке страницы, но у нас есть "бесконечная прокрутка" на странице, и когда я прокручиваю вниз, чтобы получить больше контента (и, следовательно, больше дискуссий), я ничего не получаю.
Я пробовал функцию.on() jQuery... но на чем? Я хочу вызвать эту функцию сразу после загрузки элемента и попытался.on('load' ...) безрезультатно.
Я пробовал плагин.livequery()...
$('div.discussion_content').livequery(function() {
discussion.loadDiscussion($(this));
});
Также безрезультатно.
То, что я хочу, не может быть невозможным или даже необычным... но я чувствую себя отстойно, не зная решения.
4 ответа
Если вы хотите выполнить действие сразу после вставки, то вам, вероятно, следует просто использовать логику как часть обработчика успеха для вызова AJAX.
Если вы действительно хотите выполнить эту логику для какого-либо действия на одном из элементов, то on()
должен быть ваш подход. Просто отметьте, что on()
должен быть прикреплен к родительскому элементу к динамическим элементам, которые присутствуют во время on()
функция называется. Использование будет таким:
$('#container_available_at_page_load').on('click', '.class_of_dynamic_elements', function() {
// do something
});
Эти элементы не существуют при загрузке страницы, поэтому выражение "каждый" не влияет на них. Попробуйте запустить "каждый" оператор после их создания (в событии прокрутки).
* Если вы приложите еще немного кода, это может быть полезно.
Вы пробовали событие прокрутки? http://api.jquery.com/scroll/
Вы пробовали делегировать события?
$(document).on('click','myClickeableDiv', function(){
//do your thing
});