gpt4 book ai didi

javascript - 如果另一个已经被触发,则仅触发一次

转载 作者:行者123 更新时间:2023-11-28 19:27:45 27 4
gpt4 key购买 nike

我创建了两个函数。为了简单起见,我们举个例子:

我得到了为相同对象触发不同事件的函数。您可以使用键盘箭头

激活它们
$("body").keydown(function(e) {
if (event.which == 39) open_second_layer();
});
$("body").keydown(function(e) {
if (event.which == 37) open_first_layer();
});

一旦我触发了一个功能并再次按下同一键,它就会再次触发动画(不必要)。

因为一旦函数 open_second_layer 被触发,它就不能再次被触发,直到 open_first_layer 再次被触发。反之亦然。

我发现 .bind.when 作为可能的解决方案,但无法弄清楚如何在这种情况下正确使用它们。我感谢谷歌的每一个建议或关键词。

最佳答案

您可以保留状态变量并跟踪对其进行的更改:

var state_changed = (function() {
var current = null;

return function(state) {
if (state == current) {
return false;
}
current = state;
return true;
};
}());

function open_first_layer()
{
if (!state_changed(1)) {
return;
}
// rest of code
}

function open_second_layer()
{
if (!state_changed(2)) {
return;
}
// rest of code
}

$("body").keydown(function(e) {
if (event.which == 39) {
open_second_layer();
} else if (event.which == 37) {
open_first_layer();
}
});

关于javascript - 如果另一个已经被触发,则仅触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com