在jquery

时间:2015-07-18 19:32:07

标签: javascript jquery css animation fullpage.js

我想在动画完成后从图像中删除id。我的代码中有这个:

if(index == 1 && direction =='down'){
    $('#slidetext1 #rock').animate({right:"0"});
    $('#slidetext1 #deer').animate({left: "0"}).addClass('open').removeAttr('id');
}

它不起作用,因为它在开始动画之前删除了id,但我想要做的是从图像中删除id #deer并在{{1}之后添加('open')已被执行。

所以我在这里制作了一个jsfiddle:http://jsfiddle.net/67oe1jvn/45/。当您在HELLO h1下向下滚动时,请注意左侧图像。我想要达到的目的是:当我进入第二部分时,我希望看到两个图像在视图中滑动,指示“过渡:所有1.2s缓出;”并且每当部分被更改时,它们都会以更快的速度滑出视图,因此不会被注意到那么多。

1 个答案:

答案 0 :(得分:2)

首先,正如评论中所指出的,你不想删除DOM元素的id属性,这是不好的做法。相反,例如,添加和删除特定的类。 (如果您将#deer更改为.deer

,则您的代码几乎相同

至于完成动画时的操作:请参阅jQuery docs on animate,在其第二个options参数中,它实际上接受动画结束后运行的回调:

  

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

这意味着您可以编写如下内容:

$('#slidetext1 .deer').animate({left: "0"}, {complete: function(){
    this.removeClass('deer');
}})

注意:这是否是构建动画的最佳方式令人怀疑,我只是回答你原来的问题:动画完成后如何做点什么。