我正在使用jQuery捕获复选框上的单击事件并调用函数.
我的问题是这样的:我正在调用的函数执行起来相对较慢,因此用户在复选框看起来被检查之前看到了可见的延迟,这使得界面看起来缓慢且不优雅.
这个小提琴演示了这个问题:http://jsfiddle.net/ZkUgq/4/或这里的代码:
function slowFunction() {
var mystr;
for (var i = 0; i < 5000000; i++) {
mystr += ' ';
}
}
$('#mycheckbox').click(function() {
slowFunction();
});
Run Code Online (Sandbox Code Playgroud)
有没有办法可以改变事物,以便点击事件仍然会触发slowFunction,但是不会延迟复选框中勾号的出现?
理想情况下,我想要的是onChecked复选框的事件,但我不知道是否存在.
注意:我问的原因是因为我使用的是iPhone复选框,而且当我的复选框更改时我调用的功能相对较慢使它看起来很迟钝,而且根本不像iPhone那样:)
为什么不推迟呢setTimeout?
$("#mycheckbox").click(function() {
setTimeout(slowFunction, 100);
}
Run Code Online (Sandbox Code Playgroud)
在点击事件发生后100ms将调用您的函数...调整以适应.