Javascript Can';不要在警报前隐藏div
我收到一个请求,要求删除一个div并显示一个警报。因此,我的第一个代码如下:Javascript Can';不要在警报前隐藏div,javascript,jquery,Javascript,Jquery,我收到一个请求,要求删除一个div并显示一个警报。因此,我的第一个代码如下: $(document).ready(function(){ $('#headerDiv').hide(); alert('something wants to say'); }); 它没有在chrome和edge中的警报之前隐藏div,因此我将警报行更改为 setTimeout(function(){ alert('something wants to say'); },100); 这很好,但我想知
$(document).ready(function(){
$('#headerDiv').hide();
alert('something wants to say');
});
它没有在chrome和edge中的警报之前隐藏div,因此我将警报行更改为
setTimeout(function(){
alert('something wants to say');
},100);
这很好,但我想知道为什么会发生。此外,我认为问题可能会再次发生,这取决于计算机性能,因此我想知道是否有任何质量修复。
setTimeout
在当前堆栈执行结束时被推送,因此浏览器有时间中断JS并呈现更改。
setTimeout
是一个可能的解决方案
另一种可能是在触发警报的.hide()
之后触发事件
(您可以找到有关setTimeout
实现的更多信息,这是因为JS在任何更改之前先执行。您可以做很多事情
使用不同的方式显示警报,如覆盖
使用
在隐藏后触发,并将警报绑定到该事件
您可以尝试以下解决方案,当隐藏完成时,它将显示警报
。这不取决于您的系统性能
$(文档).ready(函数(){
$('#headerDiv').hide({done:function(){alert(“something want say!”);});
//**您仍然可以添加延迟*/
//$('#headerDiv').hide({done:function(){setTimeout(function(){alert(“Hiding complete!”)},100)});
});
headerDiv headerDiv
JS和浏览器呈现在同一线程中运行。所有JS都在浏览器呈现对页面的任何更改之前执行。alert
阻止JS执行,直到用户关闭该框。定时警报是一种解决方案,或者您可以使用非阻塞警报框(库或您自己的实现)。您确定#headerDiv
元素存在吗?浏览器在警报触发之前没有时间重新绘制,您可以使用超时将警报延迟到下一个勾号,此时重新绘制完成。我确定元素存在。我可以问一下浏览器在原始代码中工作正常的原因吗?