编辑:这不是jQuery从SharePoint公告列表创建适当标记以使用jCarouselLite的问题。这似乎是jCarouselLite中的一个问题。我只使用适当的标记而不是jQuery / javascript转换代码完成了另一个jsfiddle,问题仍然存在。
您可以在http://jsfiddle.net/ayatollah/6RKNx/
看到问题同样,这只是1或2个列表项的问题。 3+工作正常。我应该更改标记,我们的jCarouselLite调用代码来解决这个问题吗?
Bounty会尽快提供!
ORIGINAL ============================================== =================================
我在Sharepoint网站上有一个公告列表,我想将其转换为jCarousel。公告列表呈现为一个表,因此我将一些jQuery代码放在一起,将其转换为所需的ul
结构。
jQuery似乎正在做它的工作,但jCarousel给出了一些奇怪的行为。第一个公告显示应该,然后第二个公告按原样滚动。但是,对于此后的每个滚动,它会闪烁第一个公告,然后在第二个公告中滚动。什么时候应该再次滚动第一个。
我让它工作正常,但它显示空白的公告,所以我介绍了一些代码来过滤掉空白的公告。这是一个向您展示问题的方法。
我从前面的代码中做的唯一更改是添加额外的布尔值:
&& $(listitem).text() != "\xa0"
见:http://jsfiddle.net/RzeEX/3/
然而,在上面的小提琴中,代码与前一个完全相同,但在我的服务器上它显示了一个额外的空白通知。不知道为什么我不能在这里复制它。
无论如何,任何人都有任何想法?
编辑:实际上只是用超过2个公告测试它,它似乎工作。见http://jsfiddle.net/RzeEX/4/它现在按预期工作,但有2个公告,它仍然破产,有1个公告,没有任何显示!它必须与jQuery有关,因为我相信jCarouselLite插件可以工作。
有关单一公告,请参阅http://jsfiddle.net/RzeEX/5/。
答案 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);
}
因此,如果您有一个或两个元素,您将只看到一两个元素。但如果你有两个以上的元素,你将只看到三个元素。