0

请有人解释为什么以下不起作用。这发生在同一个点击事件上,但 CSS 函数不是紧随其后,所以如果可能的话,我不想在动画函数上使用回调。

注意:动画会触发,但 CSS 不会。

            container.animate({
                left : (posLeft + slideWidth),
            });


                container.css({
                left : '-'+(itemsLength + startX)+'px',
            }); 
4

1 回答 1

5

.animate不是同步的,也就是说,绝对不能保证在(视觉上)完成.css之后调用。.animate因此,在您的情况下, after.animate被调用,.css立即被调用,但该left位置很快被.animate内部调用覆盖setInterval

根据文档,第二个参数可以是定义选项的对象,其中一个是complete

如果提供,则在动画完成后触发完整的回调函数。这对于将不同的动画按顺序串在一起很有用。回调没有发送任何参数,但它被设置为动画的 DOM 元素。如果为多个元素设置了动画,则每个匹配的元素都会执行一次回调,而不是对整个动画执行一次。

container.animate({
   left : (posLeft + slideWidth),
}, {
   complete: function() {
      $(this).css({ // as per doc, this is the DOM element being animated
         left : '-'+(itemsLength + startX)+'px',
      }); 
   })
});
于 2012-08-15T08:29:29.000 回答