owl carousel 2 not work with loop and 1 items (Bug Fixed Now)

54,285

Solution 1

I report this bug to Owl developer group and fix this problem here.

Change this line in Commit

view = Math.max(settings.items * 2, 2),

Now this worked in demo

Solution 2

I hope the below method will solve your problem.
You dont need to edit the owl carousel js. The same method can be applied to Bx Slider also.

$('.owl-demo').owlCarousel({
    margin: 0,
    responsiveClass: true,
    smartSpeed: 500,
    dots: ($(".owl-carousel .item").length > 1) ? true: false,
    loop:($(".owl-carousel .item").length > 1) ? true: false,
    responsive: {
        0: {
            items: 1,
        },
        500: {
            items: 1,
        },
        768: {
            items: 1,
        }
    } 
})

Solution 3

I used this method to solve the problem and I think it's pretty easy.

var options={
    margin: 10,
    nav: true,
    items: 1
    };
   if($('#owl-demo .owl-item').length>1){
       options.loop=true;
   }
   $('#owl-demo').owlCarousel(options);

Solution 4

You could check the number of .item elements before you call your plugin like so:

// Be more specific with your selector if .items is used elsewhere on the page. 
var items = $('.items');
if(items.length > 1) {
    $('#owl-demo').owlCarousel({
        loop: true,
        ...
    });
} else {
    // same as above but with loop: false;
}

Solution 5

If you want to put only single image in owlCarousel as a banner image then you can add one argument in owl carousel js.

singleItem: true

like this:

<script type="text/javascript">
    $(document).ready(function() {
        $('#main_banner').owlCarousel({
            margin: 0,
            loop: true,
            navText: [ "<img src='images/leftArrow.png'>", "<img src='images/rightArrow.png'>" ],
            dots: false,
            items :1,
            autoplay: true,
            singleItem: true
        });
    });
    </script>
Share:
54,285
Perspolis
Author by

Perspolis

Updated on July 09, 2022

Comments

  • Perspolis
    Perspolis almost 2 years

    I work with owl carousel 2 for carousel content.

    JS:

    $('#owl-demo').owlCarousel({
        loop: true,
        margin: 10,
        nav: true,
        items: 1,
    });
    

    HTML:

    <div id="owl-demo" class="owl-carousel">
        <div class="item"><h4>1</h4></div>
    </div>
    

    Problem:

    when I have one content (dynamic content using PHP) loop:true and items:1 not work and I see blank But if I add two content Owl worked true!!

    EDIT : my content is dynamic ( 1 - ....). when my result is one content owl have a problem.

    Problem DEMO

    worked DEMO

    how do fix this problem ?

  • Amino
    Amino about 8 years
    It seems that the property "singleItem" is no longer supported with v2. github.com/OwlCarousel2/OwlCarousel2/issues/740