1

我有一段简单的代码在单击按钮时执行,但我需要检测双击(只需要单击一次 - 但我需要在两次或多次单击时发出警报)。我有一个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();                   
        }
    }
});

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

4

1 回答 1

3

取消设置时您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及其是否已初始化方面略有变化。

于 2015-10-16T11:29:19.287 回答