我想在动画完成后从图像中删除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缓出;”并且每当部分被更改时,它们都会以更快的速度滑出视图,因此不会被注意到那么多。
答案 0 :(得分:2)
首先,正如评论中所指出的,你不想删除DOM元素的id属性,这是不好的做法。相反,例如,添加和删除特定的类。 (如果您将#deer
更改为.deer
)
至于完成动画时的操作:请参阅jQuery docs on animate,在其第二个options
参数中,它实际上接受动画结束后运行的回调:
完整功能 如果提供,则动画完成后将触发完整的回调函数。这对于按顺序将不同的动画串联在一起非常有用。回调不会发送任何参数,但这被设置为动画的DOM元素。如果动画了多个元素,则每个匹配元素执行一次回调,而不是整个动画执行一次。
这意味着您可以编写如下内容:
$('#slidetext1 .deer').animate({left: "0"}, {complete: function(){
this.removeClass('deer');
}})
注意:这是否是构建动画的最佳方式令人怀疑,我只是回答你原来的问题:动画完成后如何做点什么。