【发布时间】:2017-11-04 23:25:07
【问题描述】:
我有这个代码:
$("#disable").click(function () {
$("body").append("<div id='blackDisable' class='fade'> </div>");
setTimeout(function () {
$("#blackDisable").addClass("showBack");
}, 150);
});
.fade {
opacity: 0;
transition: opacity .15s linear;
}
.showBack {
opacity: .5;
}
#blackDisable {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 2222;
background-color: black;
}
<button id="disable">Click Me</button>
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
我不想使用setTimeout 强制转换工作,所以我搜索了解决方案并找到了transitionend 事件并将setTimeout 替换为transitionend 事件处理程序,但它没有触发。
如何删除此 setTimeout 并使用 transitionend 事件?
在此先感谢,对不起我的英语!
【问题讨论】:
-
我认为这不是您要找的。在您想要应用
$("#blackDisable").addClass("showBack")之前,您的代码中没有transition事件将结束。.showBack是具有转换的类 - 所以你不能等到它结束后再应用它 - 有意义吗?setTimeout是这样做的方法。 -
我知道如何使用它,但它没有用@CBroe
-
例如,引导模式与
setTimeout?@MichaelCoker 的工作方式相同 -
我认为 transitionend 与您的问题无关。这是一个问题,立即将类分配给新创建的(尚未 DOM 样式可发现的)元素 - 无需回调 - 其中 setTimeout 实际上就像一个 DOM 就绪黑客。
标签: jquery html css css-transitions