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