javascript - 防止 jQuery 函数在当前函数完成之前执行

标签 javascript jquery

我在 jQuery 中有一个函数,每当我按下任何箭头键时都会触发该函数。以下是“向上”箭头情况的代码,其他三种情况看起来非常相似,都包含在 checkKey 函数中。

document.onkeydown = checkKey;

    function checkKey(e) {
        var divs = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen"];
        e = e || window.event;

        if (e.keyCode == '38') {
            for (i = 0; i < divs.length; i++){
                var tmp = document.getElementById(divs[i]);
                var coord = $(tmp).position();
                if ((Math.abs(embargo_top - coord.top) < 115) && (Math.abs(embargo_left - coord.left) < 15)){
                    if(embargo_top < coord.top){
                        embargo_top = coord.top;
                        embargo_left = coord.left;
                        $(tmp).animate({
                            'top': (parseInt($(tmp).css('top'), 10) - 100) + "px"
                        }, 500);
                        break;
                    }
                }
            }
            checkIfWinner();
        }

我该如何处理这些事件,以便在我按下一堆箭头键时,每次函数的执行都只会在前一个函数调用完全完成之后发生?

最佳答案

有很多方法可以做到这一点。一种方法是将它们添加到队列中,该队列一次只能做一件事。在每个函数中,完成后将其出队,以便下一个函数可以运行。你可以使用 jquery 的队列函数:http://api.jquery.com/jquery.queue/

关于javascript - 防止 jQuery 函数在当前函数完成之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31622176/

相关文章:

jquery - 在页面加载时动画滚动到 ID

jquery - 使用 jquery 的下拉文本框

javascript - 在 DOM 中存储数据 - 自定义属性或 .data()

java - 带有 Spring MVC 的 jQuery datepicker - 将日期从 View 传递到 Controller 发送 null

javascript - Node.js/JavaScript : get all parts of URL path hierarchy

javascript - 重新加载/重新初始化/刷新 CommonJS 模块

javascript - 在 DIV 单击事件中,父项优先于子项

javascript - 如何在键值对的特定位置写入js文件?

javascript - 自定义元素 getRootNode.closest() 函数跨越多个(父)shadowDOM 边界

jquery - 在 Jquery 中加载页面时展开第一个菜单选项