gpt4 book ai didi

javascript - 延迟点击事件

转载 作者:可可西里 更新时间:2023-11-01 02:42:34 25 4
gpt4 key购买 nike

我想知道是否有一种简单的方法可以将点击事件延迟指定的时间段进行处理。例如我们可以

$('#someElement').on('click', 'a', function(event) {
var duration = 1000;
someAsynchronousFunction(); // Start as soon as click occurs
... // Code to delay page transition from taking place for duration specified
});

所以在这种情况下,异步函数将保证有一定的运行时间。如果它还没有完成它在这段时间内的工作我不会在意并且只想继续页面转换。我知道可以用

event.preventDefault();
...
setTimeout(function(){
window.location = $(this).attr('href');
}, duration);

但这只有在点击链接到整页时才有效。我也希望能够处理用于 ajax 调用(不更改 url)的链接。

我注意到 mixpanel 库有一个函数 track_links 似乎可以完成页面转换的延迟,尽管该函数似乎不能很好地支持我提到的 ajax 链接。

任何帮助都会很棒!谢谢。

编辑:所以我想我的问题不是很清楚,所以我将尝试在下面提供更多详细信息。

我不在乎异步函数是否完成运行!我只想保证它有一定的执行时间,之后我不在乎它是否完成,我更愿意继续进行页面转换。

即我不想延迟异步函数的启动,而是页面转换的启动。一旦发生点击,异步函数就会开始运行。

希望这更清楚一点!

最佳答案

所以最后我找到了解决我提出的问题的方法,我在这里提供它以防其他人遇到同样的问题并正在寻找解决方案。

var secondClick = false;
var duration = 1000;

$('#someElement').on('click', 'a', function(event) {
var that = $(this);

if(!secondClick) {
event.stopPropagation();
setTimeout(function(){
secondClick = true;
that.click();
}, duration);

someAsynchronousFunction();
} else {
secondClick = false;
}
}

基本上,当用户点击该链接时,它会在内部阻止该点击实际产生任何影响,并为异步函数提供一定的时间来完成它的工作,然后再对行为正常的链接进行第二次点击。

关于javascript - 延迟点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17690193/

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