0

在我的代码中,我正在为每个轮播项目上的对象设置动画,如下所示:

first_text1.fadeTo(textDuration, 1, function(){
    second_text1.fadeTo(textDuration, 1);
});

当幻灯片更改时,我调用以下内容,其中$animations包含添加了任何动画的所有对象:

$animations.stop(true, true);

然后我打电话:

$animations.each(function() {
    $(this).removeAttr('style');
}); 

删除动画留下的任何内联 CSS,以便我可以在返回该幻灯片时重复动画。

我的问题是样式永远不会从second_text1上面代码中的第二个回调动画中删除。

我怎样才能解决这个问题?

4

2 回答 2

2

没有看到$animations,很难说为什么second_text1's 的样式没有被删除。但是,通过个人经验,我注意到问题jQuery(':animated')在于它只能找到正在制作动画的对象。动画完成的那一刻,对象不再考虑:animated

话虽如此,我建议为您想要动画的每个对象添加一个类,并将其用作选择器而不是$animations.

因此,我将进行以下更改:

  1. 在动画之前添加类,在这种情况下.fadeTo()

    first_text1.addClass('animatedClass').fadeTo(textDuration, 1, function(){
        second_text1.addClass('animatedClass').fadeTo(textDuration, 1);
    });
    
  2. 换班$animations_

    $('.animatedClass').stop(true, true);
    
    $('.animatedClass').each(function() {
        $(this).removeAttr('style');
    }); 
    

演示:http: //jsfiddle.net/GVjBn/19/

希望这是您正在寻找的。如果您还有其他问题,请告诉我!

快乐编码!

于 2013-01-04T16:22:34.137 回答
1

这里的问题原来是变量中的选择器,其中一些有多个变量。

例如

var first_text2 = $('li#region-2 .text-elements h2, li#region-2 .text-elements h3');
var second_text2 = $('li#region-2 .text-elements p');

您的 removeAttr 函数无法在变量中的所有元素上正常工作。为了解决这个问题,我不得不打电话

first_text2.each( function() {
    $(this).removeAttr('style');
});

很抱歉最初没有在我的问题中显示更多代码!

于 2013-01-07T10:20:39.530 回答