Заставьте весь JavaScript работать как обычно на содержимом ajax - PullRequest
0 голосов
/ 06 октября 2018

Я работаю над обычной темой начальной загрузки, которая содержит ползунок js, всплывающее окно, вращение текста, поля кирпичной кладки и т. Д.

Тема содержит все соответствующие библиотеки js и main.js

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

Вот js / ajax для поворота текста: в приведенном ниже примере мне нужно вызвать «$ ('. Text-вращение').owlCarousel "для правильной работы поворота текста.


    function getCon(type,id)
    {
        var postData = { id: id, type: type}
        $.ajax({
            url : 'getcontent.php',
            type : 'post',
            data : postData,                
            success : function( resp ) { 
                var cont = $('#cont', resp).html();

                $('#conta').after(cont);

                $('.text-rotation').owlCarousel({
                    loop: true,
                    dots: false,
                    nav: false,
                    margin: 10,
                    items: 1,
                    autoplay: true,
                    autoplayHoverPause: false,
                    autoplayTimeout: 3800,
                    animateOut: 'zoomOut',
                    animateIn: 'zoomIn'
                });
            }               
        });
    }

Когда не вызывается" $ ('. text-вращение'). owlCarousel ", он просто отображает текст в формате списка.

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

Есть ли какой-либо предопределенный js-код, который я могу вызвать на ajaxComplete, чтобы все содержимое ajax работало нормально, так как оно работает при загрузке страницы ??

Я пытался вызвать основной.js из функции "getScript" внутри tон успешен, но не работает ..

1 Ответ

0 голосов
/ 06 октября 2018

Краткий ответ: нет.

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

Ваши варианты

  1. переписать ваш код, чтобы он не зависел от привязок событий / манипулирования контентом на основе AJAX - вместо этого используйте делегированные привязки событий для элементов, которые всегда присутствуют
  2. откладывайте инициализацию основного кода допосле того, как все вызовы AJAX завершены, DOM уже существует, когда вы добавляете свои привязки
  3. Напишите специальный код для добавления необходимых привязок событий / индивидуально измените новые добавленные блоки DOM, так как они загружены
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...