如何重新启动猫头鹰旋转木马2.0?

时间:2014-08-16 11:45:03

标签: javascript jquery html5 css3 owl-carousel

我知道在猫头鹰旋转木马的第一个版本中我们这样做:

var $carousel = $('#carousel');
var owl = $carousel.data('owlCarousel'); 
owl.reinit({touchDrag: false, mouseDrag: false;});

好的,但我们是如何在第二个版本中完成的,我不知道他们是如何重命名的。

8 个答案:

答案 0 :(得分:17)

由于某些原因 $(' #your_carousel')。触发器(' destroy.owl.carousel')无法正常工作。它不会删除重新启动插件所需的所有类。

你需要完全移除它们以摧毁猫头鹰旋转木马2"。就像github上这个问题所描述的那样:https://github.com/smashingboxes/OwlCarousel2/issues/460

要破坏猫头鹰功能,请使用:

$('#your_carousel').trigger('destroy.owl.carousel').removeClass('owl-carousel owl-loaded');
$('#your_carousel').find('.owl-stage-outer').children().unwrap();

这对我来说很完美:

// find element
$owl = $('body').find('#your_carousel');

// set the owl-carousel otions
var carousel_Settings = {
  touchDrag: false,
  mouseDrag: false
};

function initialize(){
  var containerWidth = $('body').find('.navbar').outerWidth();
  if(containerWidth <= 767) {
    // initialize owl-carousel if window screensize is less the 767px
    $owl.owlCarousel( carousel_Settings );
  } else {
    // destroy owl-carousel and remove all depending classes if window screensize is bigger then 767px
    $owl.trigger('destroy.owl.carousel').removeClass('owl-carousel owl-loaded');
    $owl.find('.owl-stage-outer').children().unwrap();
  }
}

// initilize after window resize
var id;
$(window).resize( function() {
  clearTimeout(id);
  id = setTimeout(initialize, 500);
});

// initilize onload
initialize();

答案 1 :(得分:7)

您可以使用destroy执行此操作,但必须使用最新的develop branch

$('#carousel').owlCarousel('destroy'); 
$('#carousel').owlCarousel({touchDrag: false, mouseDrag: false});

或直接访问插件:

$('#carousel').data('owl.carousel').destroy(); 
$('#carousel').owlCarousel({touchDrag: false, mouseDrag: false});

答案 2 :(得分:4)

这绝对有效:

if (container.hasClass("owl-carousel")) {
    container.owlCarousel({
        touchDrag: false,
        mouseDrag: false
    });
    container.data('owlCarousel').destroy();
    container.removeClass('owl-carousel owl-loaded');
    container.find('.owl-stage-outer').children().unwrap();
    container.removeData();
}

插件本身:

if (this.settings.responsive !== false) {
                window.clearTimeout(this.resizeTimer);
                $(window).off('resize.owl.carousel');
                this.off(window, 'resize', this.e.onThrottledResize);
            }

在Owl.prototype.destroy = function()

答案 3 :(得分:4)

现在,你可以像那样摧毁它:

var simple = $('#simple');
simple.owlCarousel(); // created
simple.owlCarousel('destroy'); // destroyed

答案 4 :(得分:2)

我不确定,您是否尝试过替换?

根据此处http://www.owlcarousel.owlgraphic.com/docs/api-events.html列出的OwlCarousel文档,要触发的事件是&#34; replace.owl.carousel &#34;。您可以像这样实现它:

var $carousel = $('#carousel');
var owl = $carousel.data('owlCarousel'); 
owl.trigger('replace.owl.carousel', [{touchDrag: false, mouseDrag: false;}]);

希望有所帮助!

答案 5 :(得分:0)

如果使用v1.3,我下一步

$('#OwlWrapper').owlCarousel({option...});
$('#OwlWrapper').append('<div><img class="img-fluid" src="demo_files/images/1200x800/5-min.jpg" alt=""></div>');
$('#OwlWrapper').data('owlCarousel').reinit();

这对我有用。

答案 6 :(得分:0)

$('#your_carousel')。trigger('destroy.owl.carousel')。removeClass('owl-carousel 猫头鹰”); $('#your_carousel')。find('。owl-stage-outer')。children()。unwrap();

只需执行此操作即可销毁猫头鹰轮播,然后使用常规的init函数重新初始化。

答案 7 :(得分:0)

对于Owl Carousel v2.3.4 版本,

// Slider element.
let sliderElement = $('#msg-slider');

// Destroy first.
sliderElement.trigger('destroy.owl.carousel');

// Then empty whole owl div.
sliderElement.empty();

// Re-init owl slider.
sliderElement
    .owlCarousel({
        loop:true,
        margin:0,
        nav:false,
        dots:true,
        responsive:{
            0: {
                items: 1
            },
            600: {
                items:1
            },
            1000: {
                items:1
            }
        }
});

希望这会对某人有所帮助。谢谢。