jCarouselLite不使用< 3列表项

时间:2011-11-08 10:33:12

标签: javascript jquery jcarousel jcarousellite

编辑:这不是jQuery从SharePoint公告列表创建适当标记以使用jCarouselLite的问题。这似乎是jCarouselLite中的一个问题。我只使用适当的标记而不是jQuery / javascript转换代码完成了另一个jsfiddle,问题仍然存在。

您可以在http://jsfiddle.net/ayatollah/6RKNx/

看到问题

同样,这只是1或2个列表项的问题。 3+工作正常。我应该更改标记,我们的jCarouselLite调用代码来解决这个问题吗?

Bounty会尽快提供!

ORIGINAL ============================================== =================================

我在Sharepoint网站上有一个公告列表,我想将其转换为jCarousel。公告列表呈现为一个表,因此我将一些jQuery代码放在一起,将其转换为所需的ul结构。

jQuery似乎正在做它的工作,但jCarousel给出了一些奇怪的行为。第一个公告显示应该,然后第二个公告按原样滚动。但是,对于此后的每个滚动,它会闪烁第一个公告,然后在第二个公告中滚动。什么时候应该再次滚动第一个。

我让它工作正常,但它显示空白的公告,所以我介绍了一些代码来过滤掉空白的公告。这是一个向您展示问题的方法。

http://jsfiddle.net/RzeEX/2/

我从前面的代码中做的唯一更改是添加额外的布尔值:

&& $(listitem).text() != "\xa0"

见:http://jsfiddle.net/RzeEX/3/

然而,在上面的小提琴中,代码与前一个完全相同,但在我的服务器上它显示了一个额外的空白通知。不知道为什么我不能在这里复制它。

无论如何,任何人都有任何想法?

编辑:实际上只是用超过2个公告测试它,它似乎工作。见http://jsfiddle.net/RzeEX/4/

它现在按预期工作,但有2个公告,它仍然破产,有1个公告,没有任何显示!它必须与jQuery有关,因为我相信jCarouselLite插件可以工作。

有关单一公告,请参阅http://jsfiddle.net/RzeEX/5/

4 个答案:

答案 0 :(得分:6)

由于我的理解是你可能有一个动态的元素列表,你可以这样做:

$('.viewport').jCarouselLite({
    auto:1000,
    speed:1000,
    visible: $('#announcementList li').length
});

如果您有1,2或100个元素,那么无关紧要。它将始终按预期工作。

这是jsfiddle:http://jsfiddle.net/XS87c/

答案 1 :(得分:3)

我认为通过设置可见:2可以给出欲望结果。

$('.viewport').jCarouselLite({
                    auto:5000,
                    speed:1000,
                    visible:2
              });   

如果它不起作用,请告诉我。

答案 2 :(得分:2)

你想看到多少人?如果有<你想要什么行为? #visible。我遇到了这个确切的问题,并且如果有<而不应用carosel就解决了它。 #在列表中可见。

这样的事情应该可以解决问题:

if ((document.getElementById('viewport') != null) && $('#announcementList').find('li').length >= 3 ) {
    $('.viewport').jCarouselLite({
        auto: 5000,
        speed: 1000
    });
}

答案 3 :(得分:1)

补充Irfan的解决方案,您可以:

if(document.getElementById('viewport') != null) {
     var options = {auto:5000,speed:1000}; 
     //Here we count the number of items and set it for a better display for 2 and 1 item
     if($('#viewport a').length <= 2) {
         options.visible = $('#viewport a').length;
     } 
     $('.viewport').jCarouselLite(options);     
}

因此,如果您有一个或两个元素,您将只看到一两个元素。但如果你有两个以上的元素,你将只看到三个元素。