在显示confirm()对话框之前,如何立即强制jQuery中的样式更改?

Ser*_*gey 3 javascript css jquery

这是jsFiddle链接:https ://jsfiddle.net/67kaphgu/

$(document).ready(function(){
    $("DIV").css("background-color","red");
    confirm("Background not yet changed");
});
Run Code Online (Sandbox Code Playgroud)

简而言之,在继续之前,我想强调一些要素并要求确认。但是,该元素会在调用返回后更改其样式confirm()。

Ror*_*san 6

问题是因为该confirm()调用阻止了UI线程的更新。一种解决方案是将confirm()呼叫置于setTimeout()很短的延迟内:

$(document).ready(function(){
  $("div").css("background-color", "red");
  setTimeout(function() {
      confirm("Background not yet changed");
  }, 50);
});
Run Code Online (Sandbox Code Playgroud)

更新的小提琴

另一个选择是使用一个库,该库confirm()用模式替换该框,以便UI可以随时更新。