我正在尝试将两个轮播放在一个页面中,每个轮播都位于选项卡式导航的不同面板中,但它不起作用。我已经尝试对Jcarousel脚本进行故障排除,但是我想当标签和JCarousel脚本相互作用时,问题就会发生。
无论如何,我的 HTML 或多或少是这样的:
<div id="myTabs">
<ul><!-- Tabs navigation -->
<li><a href="#foo">Foo</a></li>
<li><a href="#bar">Bar</a></li>
</ul>
<div id="foo">
<ul>
<li><!-- Quite complex content inside each LI, but set width of 255px --></li>
<!-- Dynamic number of LI. Minimum of 4 items -->
.
.
.
</ul>
</div>
<div id="bar">
<!-- Another UL, just like #FOO -->
</div>
</div>
所以,我需要应用标签#myTabs
,这是代码:$('#myTabs').tabs()
. 我还需要将 jCarousel 应用到UL
s 里面#foo
,#bar
这就是我正在使用的调用:
$('#myTabs > div > ul').jcarousel({
scroll: 1,
animation: 'slow',
wrap: 'circular'
});
第一个面板中的轮播正在正确创建。那里一切顺利。当我单击一个选项卡以显示隐藏面板时会出现问题:轮播导航不起作用并且控制台抛出错误"jCarousel: No width/height set for items. This will cause an infinite loop. Aborting... "
但是,当我尝试将属性设置itemFallbackDimension
为 时255px
,会发生UL
隐藏面板的宽度为510px
. 这正是两个LI
元素的宽度,但在 UL 中至少有 4 个。因此,虽然现在导航可以工作,但布局完全被打破了。(见图)
这些问题只发生在选项卡的隐藏面板中。我认为这是因为 jCarousel 在内部依赖于innerWidth()
计算UL
' 宽度的方法,但是0
当容器设置display: none
为时返回 - 而这正是选项卡隐藏面板的作用。
我该如何解决?