JQuery clearTimeOut 不停止 setTimeOut 不工作

JQuery clearTimeOut not stopping setTimeOut not working

我有一段简单的代码,它在单击按钮时执行,但我需要检测双击(只需要单击一次 - 但我需要在两次或更多次单击时发出警报)。我有一个 setTimeOut 函数暂停一秒钟然后继续 - 但是我的代码应该清除这个函数不起作用,它正在执行 alert() 但没有停止 setTimeOut函数!

$('.badge').on('click','#badge', function() {
    Click = Click + 1
    ButtonClick()
    if ($.isNumeric($(this).text())) {      
        $(this).css("background-color","#006400");
        BadgeNo = $(this).text()
        if (Click == 1) {
            var timeOut = setTimeout(function(){                
                $(this).css('background-color','#568bc1')
                $('.badge').hide()
                $('.hs').show()
                $('#numberplate').text('')
            }, 1000);
        } else if (Click > 1) {
            clearTimeout(timeOut);  
            alert("Please only select ONE badge number");
            CheckBadge();                   
        }
    }
});

我在这里犯了任何形式的小学生错误吗?我只是不明白为什么它不停止超时。

取消设置时您的 var timeOut 超出范围:

var timeOut = false;
$('.badge').on('click','#badge', function() {
    Click = Click + 1
    ButtonClick()
    if ($.isNumeric($(this).text())) {      
        $(this).css("background-color","#006400");
        BadgeNo = $(this).text()
        if (Click == 1) {
            timeOut = setTimeout(function(){                
                $(this).css('background-color','#568bc1')
                $('.badge').hide()
                $('.hs').show()
                $('#numberplate').text('')
            }, 1000);
        } else if (Click > 1) {
            if ( timeOut )
                 clearTimeout(timeOut);  
            alert("Please only select ONE badge number");
            CheckBadge();                   
        }
    }
});

仅在变量范围 timeOut 及其是否已初始化方面略有变化。