复选框.change()上的火灾事件但是* *复选框出现后会被选中?

时间:2012-03-19 15:43:54

标签: javascript jquery

我使用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一样在所有:))

2 个答案:

答案 0 :(得分:7)

为什么不用setTimeout推迟呢?

$("#mycheckbox").click(function() {
    setTimeout(slowFunction, 100);
}

在点击事件发生后100ms将调用您的函数...调整以适应。

答案 1 :(得分:1)

settimeout将推迟slowFunction调用,直到触发复选框检查事件。

$('#mycheckbox').click(function() {     
       setTimeout(slowFunction,500); 
});