Javascript 重复添加侦听器,但可以';我不知道怎么做。I';我使用one()和计时器在每次单击时重新启用它

Javascript 重复添加侦听器,但可以';我不知道怎么做。I';我使用one()和计时器在每次单击时重新启用它,javascript,jquery,Javascript,Jquery,打开JavaScript控制台,激活下面的代码段,然后单击Aqua yes/no按钮。说五次。它每次都正确执行(只是将某些内容打印到控制台)。然后单击任何其他按钮。它执行五次(至少)。然后,您可以单击第三个按钮来打开舞会闪光灯 为什么? 我首先为按钮启用侦听器,因此它只执行一次,然后删除侦听器。然后,在处理单击(打印到控制台)后,侦听器在500毫秒的暂停后重新建立 var processLike=function(){ //“data-color\u id”属性的值。 var color_id

打开JavaScript控制台,激活下面的代码段,然后单击Aqua yes/no按钮。说五次。它每次都正确执行(只是将某些内容打印到控制台)。然后单击任何其他按钮。它执行五次(至少)。然后,您可以单击第三个按钮来打开舞会闪光灯

为什么?

我首先为按钮启用侦听器,因此它只执行一次,然后删除侦听器。然后,在处理单击(打印到控制台)后,侦听器在500毫秒的暂停后重新建立

var processLike=function(){
//“data-color\u id”属性的值。
var color_id=$(this).data('color_id');
控制台日志(颜色\标识);
/*
不要将请求处理得太近。防止攻击。
*/
var millsToIgnoreClicks=500;
console.log('Like对于:'+millsToIgnoreClicks被禁用);
setTimeout(函数(){
enableLikeListenerOnce();
},millsToIgnoreClicks);
};
$(文档).ready(函数(){
enableLikeListenerOnce();
});
var enableLikeListenerOnce=函数(){
console.log(“类似启用”);
$('.td\切换\颜色\类似\按钮')。一('click',processLike);
}

颜色
最喜欢的
水
不
黑色
对
蓝色
不
紫红色
不
灰色
对
绿色
对
石灰
不
褐红色的
对
海军
对
橄榄树
对
橙色
对
紫色
不
红色
对
银
不
水鸭
不
白色
对
黄色的
不

问题是您正在呼叫

$('.td_uu切换颜色类似按钮')。一个('click',processLike);
这将使用classtd\uu toggle\u color\u like\u按钮将单击绑定到所有dom选择器,包括当前的单击按钮

尝试下面的方法(JavaScript不同,HTML相同)

var processLike=function(){
//“data-color\u id”属性的值。
var color_id=$(this).data('color_id');
控制台日志(颜色\标识);
/*
不要将请求处理得太近。防止攻击。
*/
var millsToIgnoreClicks=500;
console.log('Like对于:'+millsToIgnoreClicks被禁用);
var_this=这个;
setTimeout(函数(){
使能性保持(_this);
},millsToIgnoreClicks);
};
$(文档).ready(函数(){
$('.td\切换\颜色\类似\按钮')。一('click',processLike);
});
var enableLikeListenerOnce=函数(dom){
console.log(“类似启用”);
$(dom.one('click',processLike);
}

颜色
最喜欢的
水
不
黑色
对
蓝色
不
紫红色
不
灰色
对
绿色
对
石灰
不
褐红色的
对
海军
对
橄榄树
对
橙色
对
紫色
不
红色
对
银
不
水鸭
不
白色
对
黄色的
不

我明白了!!它将它应用于每个按钮,但只对刚刚单击的按钮关闭它。我不懂
$(dom)。一个
。你能解释一下吗?这确实有效,但我想知道这个解决方案是否有副作用或其他我需要注意的后果。有没有更精确/具体的方法只重新打开刚刚点击的按钮?哦,等等!您正在将
传递到当前按钮
enableLikeListenerOnce
。杰出的我认为dom是一种特殊的东西。未捕获参数。@aliteramin