gpt4 book ai didi

javascript - 来自多个事件的去抖 Action

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:47:35 24 4
gpt4 key购买 nike

如何消除可以从多个事件中启动的操作?这是一个仅用于演示行为的示例:http://jsfiddle.net/eXart/2/

<input type="text" id="t">

<div id="x"></div>

<script>
function debounce(fn, delay) {
var timer = null;
return function () {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(context, args);
}, delay);
};
}

function doStuff(){
document.getElementById("x").innerHTML +="<br>stuff";
}

var t = document.getElementById("t");
t.onchange = debounce(function(){ doStuff() }, 500);
t.onblur = debounce(function(){ doStuff() }, 500);
</script>

如果您在文本框中输入一些文本并点击退出,您会看到“stuff”出现两次而不是一次,因为每个事件都有自己的去抖动实例。您如何跨事件共享去抖动实例?

最佳答案

您必须像这样附加相同的去抖动处理程序

var debouncedFunc = debounce(function(){ doStuff(); }, 500);

t.onchange = debouncedFunc;
t.onblur = debouncedFunc;

如果你想共享计时器。

但我认为,如果您想在输入失去焦点时避免重复调用,您应该只使用 onchangeonblur 事件之一。

关于javascript - 来自多个事件的去抖 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19434754/

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