$(function() {
$('li a').click(function() {
$('li').not('this').css('background-position','left bottom');
$(this).parent().css('background-position','left top');
var thetimeout=window.setTimeout($.proxy(function() {
$(this).parent().css('background-image','url(images/check.png)');
}, this)
,5000);
});
});
以下是演示:www.jontakiff.com/checks
答案 0 :(得分:2)
您必须将超时的句柄存储在更宽的范围内,以便它能够存活到下一个事件(即在事件处理程序之外的范围内,以便创建一个闭包,其中变量可以存活)。
然后,如果设置了句柄,则可以使用clearTimeout
方法:
$(function() {
var thetimeout = null;
$('li a').click(function() {
$('li').not('this').css('background-position','left bottom');
$(this).parent().css('background-position','left top');
if (thetimeout != null) window.clearTimeout(thetimeout);
thetimeout = window.setTimeout($.proxy(function() {
$(this).parent().css('background-image','url(images/check.png)');
}, this)
,5000);
});
答案 1 :(得分:1)
clearTimeout(thetimeout);
在每次设置之前将其放入。