Too many carousel items in jCarousel Lite v1.0.1

I’ve been working on a project and found the need for a carousel. After some searching I found a great script called jCarousel Lite. I found a bug with the implementation of jCarousel Lite v1.0.1 and how it uses selectors to get the number of li’s in a carousel. In my implementation I’m using list items within each carousel item. After looking at your code the following would result in jCarousel thinking that it has 3 items in the carousel when really there is only 1.

<div id="carousel">
    <ul>
        <li class="carouselItem">
            <ul>
                <li></li>
                <li></li>
            </ul>
        </li>
    </ul>
</div>

The current implementation of jCarousels use of $(‘li’, ul) in the constructor will return all nested li’s regardless of how deeply nested they are in the dom structure. To handle this issue I’ve modified a few lines of code in the constructor to fix this issue. Feel free to apply these changes if you see fit.

Here’s the original snippet:
228
229
230
231
232
233
234
235
236
var div = $(this), ul = $("ul", div), tLi = $("li", ul), tl = tLi.size(), v = o.visible;

if(o.circular) {
    ul.prepend(tLi.slice(tl-v-1+1).clone())
      .append(tLi.slice(0,v).clone());
    o.start += v;
}

var li = $("li", ul), itemLength = li.size(), curr = o.start;
Here is my modified version:
228
229
230
231
232
233
234
235
var div = $(this), ul = div.children(‘ul’), tLi = ul.children(‘li’), tl = tLi.size(), v = o.visible;

if(o.circular) {
    ul.prepend(tLi.slice(tl-v-1+1).clone())
      .append(tLi.slice(0,v).clone());
    o.start += v;
}
var li = ul.children(‘li’), itemLength = li.size(), curr = o.start;
Date
March 30, 2011
Time
8:11 pm
Category
Uncategorized
Tags
Tags: , ,