0

我在 jcarousel 中阅读了很多关于“圆形”包装错误的信息,但没有找到这个特定的错误。我有带有“圆形”包装的 jcarousel,当用户将鼠标悬停在幻灯片上时,我想显示有关当前幻灯片的一些信息,并在鼠标离开幻灯片时隐藏此信息。为了实现这一点,我将此信息保存在<li>包裹在<div class="description">.

$('#carousel').jcarousel(
     auto: 3,
     wrap: 'circular',
     scroll:1,
     initCallback: mycarousel_initCallback,
     size:5
 });

并将事件(我也尝试过变体live())绑定到<li>元素(当前和未来将在 jcarousel 以“循环”包装工作期间出现):

$('#carousel').delegate(
                        'li',
                        'mouseover',
                        function (){
                            $(this).find('.description').slideDown();
                            return false;
                        }
                    );
                $('#carousel').delegate(
                        'li',
                        'mouseout',
                        function () {
                            $(this).find('.description').slideUp();
                            return false;
                        }
                    );

这很好用,但在某些时候(对我来说完全不确定,它可能是使用的第一秒,甚至可能是前/后用力敲击的几分钟)偶尔会停止出现幻灯片描述。我尝试对此进行调试,发现这个损坏的幻灯片上的事件会触发,带有描述的 dom 元素存在,但 slideDown()/slideUp() 根本没有任何作用。并且此幻灯片一直损坏,直到页面重新加载。

出于某种原因,我无法将 wrap 更改为 other,也无法将 jQuery 从 1.3(或 1.4,我实际上不记得)更改为更新的版本。有任何想法吗 ?

4

1 回答 1

0

好吧,长话短说:这个问题与 jQuery 动画功能和 jCarousel 之间的交互有关。当幻灯片具有圆形包装时,它会在某个时候开始创建和删除代表幻灯片的新节点。并在动画未完成时删除节点“挂起”jquery 的 fx 队列。为了避免这个麻烦,我必须在删除幻灯片之前清除这个队列。看起来像 hack,但在我看来,没有什么比这更好的了。

于 2012-09-27T09:02:39.117 回答