How to change options based on number of items in the carousel using Owl Carousel 2?

冷暖自知 提交于 2019-12-12 02:27:13

问题


I'm using Owl Carousel 2 on a project with dynamic content with an unlimited amount of slides that can be added.

So there could be an instance where there is only three slides or an instance where there is six.

My desired functionality is that if there is less than four slides (the carousel shows four items at a time), then add the mouseDrag: false and touchDrag: false options.

Here is my JS:

$('.owl-carousel').owlCarousel({
    loop:false,
    margin:20,
    responsive : {
        // breakpoint from 0 up
        0: {
            items: 1,
            mouseDrag:true,
            touchDrag:true
        },
        // breakpoint from 480 up
        500: {
            items: 2,
            mouseDrag:true,
            touchDrag:true
        },
        // breakpoint from 768 up
        740: {
            items: 3,
            mouseDrag:true,
            touchDrag:true
        },
        // breakpoint from 1024 up
        980: {
            items: 4,
            mouseDrag:false,
            touchDrag:false
        }
    }
})

So, currently when the viewport is over 1024px wide, it will remove the dragging functionality regardless of how many items there are. Which means you can't see any more than 4 (if there are any).

Thanks, Jay


回答1:


Please see this answer you can alter to fit what you need.

http://stackoverflow.com/a/33252395/3794783

here is my code for V2 with that in use:

Notice I use the variable value based on the item_count and if 1 only of .item exists, then apply the "false" to: loop:true_false, nav:true_false ..

$(function () {
  var owl_instance = $('.sectionlist .owlcarousel');
  var item_count = parseInt(owl_instance.find('.item').length);
  var true_false = 0;
  if (item_count <=1) {true_false = false;} else {true_false = true;}
  //
  // control nav visiblity thumbs shown vs thumbs allowed visible
  // see: http://stackoverflow.com/a/33252395/3794783
  //
  owl_instance.on('initialized.owl.carousel resized.owl.carousel', function(e) {
      $(e.target).toggleClass('owl-nonav', e.item.count <= e.page.size);
  }); 
  owl_instance.owlCarousel({  
    themeClass: 'owltheme-smallnav',
    items:3,
    responsive:{
          0:{items:1,nav:true},
          605:{items:3},
          670:{items:3},
          1250:{items:3},
          1520:{items:3}
     },
    //margin:0,
    navRewind:false, // Go to first/last.
    // *****************
    loop:true_false, 
    nav:true_false,
    // backport the classes to older used ones
    navContainerClass: 'owl-buttons',
    dotsClass: 'owl-pagination',
    dotClass: 'owl-page',
    navText: [
    '',
    ''
    ],
    autoplayHoverPause:true, //false
    lazyLoad: true,
    dots:true // false
  });
});


来源:https://stackoverflow.com/questions/42998043/how-to-change-options-based-on-number-of-items-in-the-carousel-using-owl-carouse

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!