在弹出确认对话框之前做一些事情
do something before confirm dialog pops up
$('.lorem').on('click', function(){
$(this).hide();
if(prompt('DO SOMETHING') != null) {console.log('something');}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='lorem'>lorem</div>
所以我想先隐藏div然后弹出确认对话框。可能吗?
您可以使用 setTimeout:
document.querySelector('.lorem').addEventListener('click', () => {
document.querySelector('.lorem').style.display = "none";
setTimeout(() => {
if(prompt("do something") !== null) {
console.log('do something')
}
}, 100)
})
在下一次绘制之前使用动画帧运行代码。
window.requestAnimationFrame()
$('.lorem').on('click', function(){
// The browser will paint async not sync, so the div may still be visible
// even after this line
$(this).hide();
// when the browser is ready to paint the div off screen the callback will fire
window.requestAnimationFrame(() => {
if (prompt('DO SOMETHING') != null) {
console.log('something');
}
});
});
注意:您可能需要嵌套动画帧,因为浏览器倾向于以不同方式实现请求动画帧。
requestAnimationFrame(() => requestAnimationFrame(() => {
...
}));
$('.lorem').on('click', function(){
$(this).hide();
if(prompt('DO SOMETHING') != null) {console.log('something');}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='lorem'>lorem</div>
所以我想先隐藏div然后弹出确认对话框。可能吗?
您可以使用 setTimeout:
document.querySelector('.lorem').addEventListener('click', () => {
document.querySelector('.lorem').style.display = "none";
setTimeout(() => {
if(prompt("do something") !== null) {
console.log('do something')
}
}, 100)
})
在下一次绘制之前使用动画帧运行代码。
window.requestAnimationFrame()
$('.lorem').on('click', function(){
// The browser will paint async not sync, so the div may still be visible
// even after this line
$(this).hide();
// when the browser is ready to paint the div off screen the callback will fire
window.requestAnimationFrame(() => {
if (prompt('DO SOMETHING') != null) {
console.log('something');
}
});
});
注意:您可能需要嵌套动画帧,因为浏览器倾向于以不同方式实现请求动画帧。
requestAnimationFrame(() => requestAnimationFrame(() => {
...
}));