我正在创建一个 UI 组件,其中的目标元素在单击时会触发一系列动画。动画应该是按顺序发生的:点击目标元素(targetEl),一个透明的覆盖层淡入目标元素(覆盖层),另一个div在覆盖层(slideover)上向下滑动,slideover有一个关闭图标,当关闭单击图标 上一个动画反向发生(幻灯片向上滑动,叠加淡出)。
我的问题是:我正在使用嵌套的 .on("click") 和动画调用。动画在最初的几次点击中完美运行,但在第 3 次或第 4 次点击时表现异常。覆盖将快速淡入/淡出,您根本看不到幻灯片动画。我认为正在发生的事情是动画以某种方式失序。
这是我的 JS/jQuery:
$(targetEl).on("click", function() {
$(overlay).on("click", function(e){e.stopPropagation();});
$(overlay).fadeIn("slow", function(){
$(slideover).animate({"top":targetEl.height()/3}, 1000);
});
$("#close").on("click", function(e){
e.stopPropagation();
$(slideover).animate( {
"top":'-'+targetEl.height()/3}, 1000, function({
$(overlay).fadeOut("slow");
});
});
});
我使用 stopPropagation 是因为 slideover 是 overlay 的子元素,它是 targetEl 的子元素,我不希望对子元素的点击“落入”父元素。任何帮助是极大的赞赏!