gpt4 book ai didi

封装在函数中的 JavaScript 事件监听器

转载 作者:行者123 更新时间:2023-11-30 08:36:18 25 4
gpt4 key购买 nike

我有一个函数中的事件监听器。监听器和发射器都在同一个函数中。

当事件触发时,变量会增加。到目前为止,一切都很好。但是当我多次调用该函数时,在同一个函数调用中多次触发监听器。

var test = function() {    
var completeStatus = 0;

$(document).on('gt', function() {
console.log(++completeStatus);
});
$(document).trigger('gt');
}

test();
test();
test();

它期望它输出 1 3 次,因为该函数被调用了 3 次。但它输出:

0
1
0
2
1

为什么会这样以及如何获得所需的行为?

这是一个 jsfiddle尝试一下。

最佳答案

因为你正在使用 $(document).trigger('gt');所以它在所有文档事件中启动触发事件,这就是为什么增加函数返回输出的调用,如

0       //from first function call
1 0 //from second function call
2 1 0 //frm third function call
.... and so on

解决方案:

var test = function() {    
var completeStatus = 0;
var pageInitialized = false;
$(document).on('gt', function() {
if(pageInitialized) return;
console.log(++completeStatus);
pageInitialized = true;
});
$(document).trigger('gt');
}

test();
test();
test();

关于封装在函数中的 JavaScript 事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31115613/

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