Jquery 尝试使用transitionend事件而不是setTimeout
我有以下代码:Jquery 尝试使用transitionend事件而不是setTimeout,jquery,html,css,css-transitions,Jquery,Html,Css,Css Transitions,我有以下代码: $(“#禁用”)。单击(函数(){ $(“正文”)。追加(“”); setTimeout(函数(){ $(“#blackDisable”).addClass(“showBack”); }, 150); }); .fade{ 不透明度:0; 过渡:不透明度。15s线性; } .展示{ 不透明度:.5; } #黑色禁用{ 位置:固定; 排名:0; 底部:0; 左:0; 右:0; z指数:2222; 背景色:黑色; } 点击我 转换与您的问题有关,因为没有注册任何终端的转换。 这是一
$(“#禁用”)。单击(函数(){
$(“正文”)。追加(“”);
setTimeout(函数(){
$(“#blackDisable”).addClass(“showBack”);
}, 150);
});代码>
.fade{
不透明度:0;
过渡:不透明度。15s线性;
}
.展示{
不透明度:.5;
}
#黑色禁用{
位置:固定;
排名:0;
底部:0;
左:0;
右:0;
z指数:2222;
背景色:黑色;
}
点击我
转换与您的问题有关,因为没有注册任何终端的转换。
这是一个立即将类分配给新创建的(尚未发现DOM样式)元素的问题-没有回调-setTimeout
实际上就像一个“DOM就绪黑客”
没有设置超时
?两种方式(甚至更多):
1. <代码>动画
(而不是过渡
)
$(“#禁用”)。单击(函数(){
$(“正文”)。追加(“”);
$(“#blackDisable”).addClass(“showBack”);
});代码>
.fade{
不透明度:0;
/*无过渡*/
}
.展示{
/*不透明度:.5;未准备好,请让浏览器指定/触发关键帧*/
动画:fadeIn 0.3s线性向前;
}
#黑色禁用{
位置:固定;
排名:0;
底部:0;
左:0;
右:0;
z指数:2222;
背景色:黑色;
}
@关键帧淡入淡出{
到{不透明度:0.5;}
}
点击我
我想这不是你想要的。您的代码中没有将在应用$(“#blackDisable”).addClass(“showBack”)
之前结束的转换事件.showBack
是带有转换的类-所以你不能在应用它之前等待它结束-有意义吗setTimeout
就是这样做的。我知道如何使用它,但它不起作用@CBroeSo,例如bootstrap模式在setTimeout
中也起作用?@MichaelCokerI认为transitionend与您的问题无关。这是一个立即将类分配给新创建的(尚未发现DOM样式)元素的问题,而无需回调,其中setTimeout实际上就像是一个DOM就绪的黑客。我不喜欢第一种方法,因为blackDisable
在开始时将在DOM上。第二种方法看起来不错,但我真的不明白它是如何工作的。延迟
和队列
函数的作用是什么?@Sagie编辑了我的答案,我将使用动画
而不是转换
-来回答您的评论,.queue()
(jQuery)是将动画绑定到元素后延迟事件的一种方法delay
是一个动画,因此实际上它的行为就像您的setTimeout
一样,只是以一种更为jquery-ysh的方式。我将继续使用转换的方式。在jQuery文档中,我看到delay()
获取延迟的持续时间。在您的示例中,它如何知道要延迟多少时间?