3

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

您可以在http://jsfiddle.net/ayatollah/6RKNx/看到问题

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

赏金将在可用时提供!

原创================================================== ===============================

我在 Sharepoint 站点中有一个公告列表,我想将其转换为 jCarousel。公告列表呈现为表格,因此我整理了一些 jQuery 代码将其转换为所需的ul结构。

jQuery 似乎在做它的工作,但 jCarousel 给出了一些奇怪的行为。第一个公告按原样显示,然后第二个公告按原样滚动显示。然而,在此之后的每一个滚动,它都会闪现第一个公告,然后滚动第二个。当它应该再次滚动第一个时。

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

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

4 回答 4

6

由于我的理解是您可能有一个动态的元素列表,因此您可以执行以下操作:

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

这样,如果您有 1、2 或 100 个元素,则无关紧要。它将始终按应有的方式工作。

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

于 2011-11-10T14:16:07.187 回答
3

我认为通过设置 visible:2 可能会产生期望的结果。

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

让我知道它是否不起作用。

于 2011-11-10T14:00:39.047 回答
2

你想有多少可见?如果有 < # 可见,你想要什么行为。我遇到了这个确切的问题,如果列表中有 < # 可见,则通过不应用轮播来解决它。

像这样的东西应该可以解决问题:

if ((document.getElementById('viewport') != null) && $('#announcementList').find('li').length >= 3 ) {
    $('.viewport').jCarouselLite({
        auto: 5000,
        speed: 1000
    });
}
于 2011-11-10T14:14:22.607 回答
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);     
}

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

于 2011-11-10T14:20:34.677 回答