问题 jQuery:绑定和解除绑定实时点击事件


所以我的问题有两个限制:

  1. 我必须在我的点击事件中使用外部函数调用,并且
  2. 我必须使用实时点击事件,而不是绑定典型的点击事件。

所以我的问题是我在点击事件发生后尝试取消绑定,然后在点击事件代码完成后重新绑定它。我这样做是为了防止代码当前正在进行中的重复点击(我有fadeIn / Out动画,可以快速点击按钮两次或三次,从而执行我的代码2或3次,这是不需要的) 。我正在使用的代码如下:

$item.live("click", handleClick);

function handleClick(ev) {

    $(this).die("click");

    // perform code here, including things with 'ev'

    $(this).live("click", handleClick);
}

我疯了,还是应该没有问题?现在,我可以点击一次,但之后不会再次点击。很明显die()正在运行,但由于某种原因它没有被重新绑定到该函数。我已经验证它确实到达handleClick()中的代码以重新绑定实时点击。

有任何想法吗?任何帮助将不胜感激。谢谢。


4854
2017-11-25 19:18


起源



答案:


根据 文件

直播活动目前仅在对选择器使用时才有效。

$(this) 不是选择器。


8
2017-11-25 19:21



@Greg,很有意思。也许如果我在函数中分配了实时点击事件: var $tempVar = $('#' + $(this).attr('id')),然后说 $tempVar.live("click", handleClick) 你觉得这会有用吗? - MegaMatt
一世 认为 所以... - Greg
是的,这将有效 - PetersenDidIt


答案:


根据 文件

直播活动目前仅在对选择器使用时才有效。

$(this) 不是选择器。


8
2017-11-25 19:21



@Greg,很有意思。也许如果我在函数中分配了实时点击事件: var $tempVar = $('#' + $(this).attr('id')),然后说 $tempVar.live("click", handleClick) 你觉得这会有用吗? - MegaMatt
一世 认为 所以... - Greg
是的,这将有效 - PetersenDidIt


要解除所有使用.live()绑定的点击处理程序,请使用.die()方法:

$(".clickme").die("click");

6
2017-07-17 13:03





您可以使用此模式取消绑定单击的元素并让所有其他元素生效:

$('a.myselector').live('click', function() {

    // do things

    $(this).unbind('click').live('click', function() {return false;});

    return false; // block the link
});

适用于JQUERY 1.8.2


0
2018-06-04 12:52