2015-03-26 3 views
2

Извините, мне ...jQuery Ready Событие не работает после загрузки AJAX

Найденный ответ там и до сих пор не работает.

Так что мои скрипты:

$(document).ready(function() { 
$('.gifs').gifplayer(); 
}); 

и динамический контент загружается AJAX:

<img class="gifs post img-responsive img-bordered" width="100%" src="<?php echo $post->thumb_url;?>" data-gif="<?php echo $post->url;?>" /> 

изображение с "гифы" класса должны назвать функцию "gifplayer". Но каждый раз, когда ajax загружен, он не работает. Что я должен сделать, чтобы получить наилучшую реализацию для этого?

Это все и спасибо ...

+0

Какие ответы вы нашли, что не сработали? – lifetimes

+0

Используйте что-то вроде '$ .ajax (/ * ... * /) .done (function() {$ ('. Gifs'). Gifplayer();/* ... * /});' –

+0

Спасибо , Мой код отправлен в комментарии, потому что ограничение текста. –

ответ

0

К тому времени, динамическое содержимое добавляется в DOM с помощью AJAX, код в готовности события уже выполнены.

Вы должны вызывать $ ('. Gifs'). Gifplayer() только после успешного завершения вызова AJAX. В jQuery это будет через обработчики событий .done или .success.

Вот пример JQuery:

$(function() { 
    getData(); 
}); 

function getData() { 
    $.get("test.php") 
    .done(function(data) { 
     $('.gifs').gifplayer(); 
    }); 
} 

Если вы выполняете несколько AJAX звонки или иметь не АЯКС-нагруженные .gifs элементы, вы будете иметь, чтобы получить немного более элегантной, чтобы убедиться, что gifplayer () вызывается только один раз.

+0

Ответил в комментарии. Это означает, что я должен вызывать функцию после выполнения ajax-успеха? Попробуем это скоро. –

+0

И да, это работает. Спасибо ... –

+0

Я рад помочь. –

0

Этот код:

$('.gifs').gifplayer(); 

будет выполнять только gifplayer() на элементах, найденных с помощью JQuery в то время. Строка кода выполняется только один раз, когда страница готова и никогда больше. jQuery не имеет способа идентифицировать элементы, которые еще не существуют.

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

+0

У меня есть пользовательский файл JS, и я не буду добавлять js-скрипт в загруженный элемент ajax. Любая лучшая реализация? –

+0

@UnapzeusAdinovic: Неважно, какой файл определяет функциональность. Вы все равно можете выполнить код. Нет, нет «лучшей реализации». Чтобы инициализировать этот плагин (я предполагаю, что это так), вам нужно вызвать функцию '.gifplayer()' для сопоставления элементов. Вы можете абстрагировать его за некоторыми обратными вызовами, функциями и событиями, но в итоге вы получаете тег 'img' и вы хотите вызывать' .gifplayer() 'на этом теге, нет другого пути, кроме как, invoke 'gifplayer()' на этом теге. – David

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