【发布时间】:2020-10-04 14:49:12
【问题描述】:
尝试使用以下代码在一定时间后解除对锚标记的点击。
$('a').click((e)=>{
x = e.target;
e.preventDefault();
setTimeout(function(){
unBind(x) }, 500);
});
unBind=(x)=>{
$(x).unbind('click').click();
}
但这不起作用。解除绑定似乎没有发生。但如果我改用类选择器,代码确实可以工作。
$('.className').click((e)=>{
e.preventDefault();
setTimeout(function(e){
$('.className').unbind("click").click();
}, 500);
})
有人可以帮我解决锚标记的问题吗?谢谢!
编辑:更新了从 setTimeout 中删除 $(this) 的代码
【问题讨论】:
-
也许您没有准备好文件? stackoverflow.com/a/11227766/2275490
-
制作minimal reproducible example 这样我们就可以看到自己在什么情况下
a选择器不起作用而第一类起作用... -
this不会是setTimeout中的链接,并且由于=>,它也不会是点击处理程序中的链接 - 在您的 setTimeout 中,添加console.log(this)可能是window -
您的用例有点困惑:您希望允许点击(尽可能多的用户可以点击)0.5 秒,然后禁用所有点击但运行最后一个(不会作为点击运行)关闭)?有点奇怪的TBH。如果您想要单击,请改用
.one("click", ...,它会在......好吧......发生一个事件后自动关闭 -
@freedomn-m 用例是我需要在锚点点击时设置一些数据层变量,一旦设置了变量,它需要解除绑定并重定向到用户点击的 href。
标签: javascript jquery