如何使用clearTimeout使页面工作

时间:2010-08-17 22:40:12

标签: jquery

再次回来。我刚刚得到了一些关于这个片段的帮助......所以现在我有一个最后一步。此代码在单击项目5秒后为其单击项添加一个复选标记。这是问题所在:如果快速连续点击三个项目,我需要取消不是最后一个项目点击的项目的超时。只有在单击该项目时才会出现该复选框,然后才允许经过五秒钟。这是代码:

 $(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

2 个答案:

答案 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);

在每次设置之前将其放入。