11

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

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

所以我的问题是我试图在点击事件发生后解除绑定,然后在点击事件代码完成后重新绑定它。我这样做是为了防止在代码当前正在处理时重复点击(我有淡入/淡出动画,这将允许按钮快速点击两次或三次,从而执行我的代码 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() 中的代码来重新绑定实时点击。

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

4

3 回答 3

8

根据文档

实时事件当前仅在针对选择器使用时才有效。

$(this)不是选择器。

于 2009-11-25T19:21:46.107 回答
6

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

$(".clickme").die("click");
于 2011-07-17T13:03:03.020 回答
0

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

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

    // do things

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

    return false; // block the link
});

适用于 JQUERY 1.8.2

于 2013-06-04T12:52:18.887 回答