Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 尝试使用transitionend事件而不是setTimeout_Jquery_Html_Css_Css Transitions - Fatal编程技术网

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()
获取延迟的持续时间。在您的示例中,它如何知道要延迟多少时间?