如何在执行javascript事件之前确保HTML表单元素明显更新

时间:2013-04-20 11:34:47

标签: javascript jquery

我发现像.click和.change这样的事件,如果它们导致一些花费大量时间(例如一两秒钟)的处理实际上会延迟屏幕更新,所以用户看不到例如单选按钮选择移动直到一段时间后。就用户体验而言,这当然是一个很大的禁忌。按钮应立即更改,并且光标指示是否正在等待。

示例:http://jsfiddle.net/needlethread/uFjZf/1/

$('[name="myradio"]').change(function() {
  delay();                              // one second of code execution
  $("#aaa").html("myradio changed");    // happens same time as radio moves 
});

确保按钮在用户点击后立即发生变化的最佳方法是什么?我试过.click事件,同样的事情。

1 个答案:

答案 0 :(得分:0)

如果你使用Ajax连接服务器,那就没问题,因为这是异步的。

否则,如果你只是做了很多客户端的事情,你可以使用一个技巧:

$('[name="myradio"]').change(function() {
  $("#aaa").html("myradio changed");    // happens same time as radio moves 
  setTimeout(delay, 0);
});

这样做(setTimeout为0毫秒)有效地将调用移动到执行堆栈的末尾,因此在调用之前所有内容都会被执行。