2012-03-19 67 views
3

我正在使用jQuery捕获复选框上的单击事件并调用函数。复选框上的火灾事件.change()*在复选框出现后被选中。

我的问题是这样的:我调用的函数执行起来相对较慢,所以用户在复选框出现被检查之前看到可见的延迟,这使得界面显得呆滞和不雅。

这拨弄演示了此问题:http://jsfiddle.net/ZkUgq/4/或代码在这里:

function slowFunction() { 
    var mystr; 
    for (var i = 0; i < 5000000; i++) { 
     mystr += ' '; 
    } 
} 
$('#mycheckbox').click(function() { 
    slowFunction(); 
}); 

有没有办法,我可以改变的事情,这样click事件仍会触发slowFunction,但不耽误蜱的外观复选框?

理想情况下,我想要的是一个onChecked事件的复选框,但我不知道是否存在。

注:我问的原因是因为我使用的是iPhone Checkbox,和相对缓慢的功能,我打电话的时候,我的复选框的变化使得它看起来呆滞,并没有类似iPhone在所有:)

回答

7

为什么不推迟setTimeout

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

哪个会在点击事件发生后100ms调用你的函数......调整以适应。

1

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

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