微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 从ajax调用中对动态HTML应用猫头鹰轮播

我需要将一个猫头鹰轮播及其所有CSS应用于来自ajax调用的动态HTML元素.

目前,代码如下所示:

jQuery(function ($) {
    $('.entry-content').addClass('entry-content--quiz')
    $('.get-questions').on('click', function (e) {
        e.preventDefault();
        let url = $(this).attr('href');
            $.ajax({
                url: url,
            }).done(function (data) {
                $('.entry-content').html(data);
                $('#wpvq-page-0').owlCarousel({
                    items:1,
                    slideBy: 1,
                    stagePadding: 0,
                    nav: true,
                    dots: false,
                });
            }).fail(function (err) {
                console.log('ajax err back', err);
            });
        return false;
    });
});

这显然不起作用并抛出“owl carousel不是函数”,因为它在初始加载时不在DOM中.我需要以某种方式将轮播应用于来自数据的div.

我找到了一些相关的答案,但它们不符合我的情况:

Load dynamic content in Owl Carousel 2

How to re-render a owl-carousel item?

他们看起来像是在重写DOM,但在我正在做的事情中没有意义.

如何将一个猫头鹰轮播放在来自ajax调用的HTML内的div上?

编辑12/10/2018完整样本:

jQuery(function ($) {
    $('#link').on('click', function (e) {
        e.preventDefault();
        let url = $(this).attr('href');
            $.ajax({
                url: url,
            }).done(function (data) {
                $('#content').html(data);
                $('#carousel-section').addClass("owl-carousel");
                setTimeout(function() {
                    $('#carousel-section').owlCarousel({
                        items:1,
                        slideBy: 1,
                        stagePadding: 0,
                        nav: true,
                        dots: false,
                    });
                },1000)
            }).fail(function (err) {
                console.log('ajax err back', err);
            });
        return false;
    });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css">
<div id="content"></div>
<a id="link" href="http://silly-stallman-3e4b6f.netlify.com/index.html">cclick</a>

我无法在DIV idk中填充HTML,为什么它不起作用,但这是我正在做的例子 – 获取静态HTML(http://silly-stallman-3e4b6f.netlify.com/index.html)并将其放入ajax调用,用它填充页面然后需要以某种方式将猫头鹰轮播定位到动态HTML.我该怎么做呢?

解决方法:

我以前遇到过这个问题.我最终解决了ajax以异步方式运行.
你可能会尝试这样的事情.希望它会给你一些想法.

jQuery(function ($) {
    $('.entry-content').addClass('entry-content--quiz')
    $('.get-questions').on('click', function (e) {
        e.preventDefault();
        let url = $(this).attr('href');
        let result = undefined;
        
        $.ajaxSetup({ async: false });
        $.ajax({
            url: url,
        }).done(function (data) {
            result = data;
        }).fail(function (err) {
            console.log('ajax err back', err);
        });
        $.ajaxSetup({ async: true });
        
        // Check if result is assigned
        if (result) {
          $('.entry-content').html(result);
          $('#wpvq-page-0').addClass("owl-carousel");
          $('#wpvq-page-0').owlCarousel({
              items:1,
              slideBy: 1,
              stagePadding: 0,
              nav: true,
              dots: false,
          });   
        }
     
        return false;
    });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐