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

时间:2009-11-25 19:18:46

标签: jquery click bind live die

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

  1. 我必须在点击事件中使用外部函数调用,
  2. 我必须使用实时点击事件,而不是绑定典型的点击事件。
  3. 所以我的问题是我在点击事件发生后尝试取消绑定,然后在点击事件代码完成后重新绑定它。我这样做是为了防止代码当前正在进行中的重复点击(我有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()中的代码以重新绑定实时点击。

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

3 个答案:

答案 0 :(得分:8)

根据documentation

  

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

$(this)不是选择器。

答案 1 :(得分:6)

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

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

答案 2 :(得分: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