javascript - X 秒后禁用 3 个 onClick 函数

标签 javascript jquery

我仍在学习 Javascript 和 jQuery 的奇迹,我决定制作一款石头剪刀布游戏。然而,我想让这件事变得有趣并且更具互动性,而不仅仅是说“你赢了”或“你输了”。

我有 3 张图片:石头、剪刀、布。当您单击其中一个时,它会将图像源更改为另一个图像源,使其看起来像是被选中了。

问题是,当您单击一个时,游戏会在 2 秒内告诉您是赢了、输了还是平局。在那一刻,您仍然可以单击其他图像,而无需等待。我想禁用点击监听器,这样您就无法执行此操作,直到 2 秒结束。

JS代码:

$('#rock').click(function() {
    $(this).attr('src','Images/Result/Red Rock.png');
    $('#rock, #paper, #scissors').prop('disabled', true).delay(2000).prop('disabled', false);
});
$('#paper').click(function() {
    $(this).attr('src','Images/Result/Red Paper.png');
    $('#rock, #paper, #scissors').prop('disabled', true).delay(2000).prop('disabled', false);
});
$('#scissors').click(function() {
    $(this).attr('src','Images/Result/Red Scissors.png');
    $('#rock, #paper, #scissors').prop('disabled', true).delay(2000).prop('disabled', false);
});

实时站点:

http://goo.gl/3LTmMT

最佳答案

使用delay()仅适用于那些使用基于队列的执行的方法,例如动画相关方法(animate()/slideDown 等)。

在这种情况下最好使用超时

$('#rock').click(function () {
    $(this).attr('src', 'Images/Result/Red Rock.png');
    pauseClick();
});
$('#paper').click(function () {
    $(this).attr('src', 'Images/Result/Red Paper.png');
    pauseClick();
});
$('#scissors').click(function () {
    $(this).attr('src', 'Images/Result/Red Scissors.png');
    pauseClick();
});

function pauseClick() {
    var $els = $('#rock, #paper, #scissors').prop('disabled', true);
    setTimeout(function () {
        $els.prop('disabled', false);
    }, 3000)
}

关于javascript - X 秒后禁用 3 个 onClick 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29135322/

相关文章:

javascript - 使用 jquery 获取类

javascript - 使用 JavaScript 获取通过 HTML 文件选择器按钮选择的文件的绝对路径

javascript - 使用 jQuery 对每个数字使用相同的时间使数字增长

javascript - 在页面对象方法内共享断言

javascript - 动态加载列表项并对它们进行排序,两个脚本都分开工作,但它们不能一起工作。 (包括 JSFiddle)

jquery - 删除所有图像的不透明度,但用 jquery 单击一张图像

javascript - 标题的自定义工具提示 CSS 问题

javascript - 全屏 javascript 中的 Scroll-Jacking;定义滚动阈值

javascript - jquery .replace(/./g, "") 对我不起作用,但对其他人不起作用

Web 辅助功能屏幕阅读器无法读取 JavaScript 弹出对话框