2009-11-25 83 views
11

因此有兩個約束我的問題:jQuery的:綁定和解除綁定直播點擊活動

  1. 我必須用我的單擊事件的外部函數調用,並
  2. 我必須使用現場點擊事件,而是綁定一個典型的點擊事件。

所以我的問題是,我試圖解除綁定click事件它發生之後,再重新綁定,一旦點擊事件代碼完成。我這樣做是爲了防止在代碼當前正在處理的過程中出現重複點擊(我有淡入/淡出動畫,可以讓按鈕快速點擊兩次或三次,從而執行我的代碼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()中的代碼以重新綁定實時點擊。

任何想法?任何幫助將不勝感激。謝謝。

回答

8

按照documentation

直播目前事件對選擇使用時,唯一的工作。

$(this)不是選擇器。

+0

@格雷格,有趣。也許如果我在函數中分配了實時點擊事件,就像這樣:'var $ tempVar = $('#'+ $(this).attr('id'))',然後說'$ tempVar.live(「click 「,handleClick)'你認爲這會起作用嗎? – 2009-11-25 19:25:31

+0

我*認爲*所以... – Greg 2009-11-25 19:46:54

+2

是的,這將工作 – PetersenDidIt 2009-11-26 02:00:16

6

解除綁定從使用.live(綁定所有的點擊處理程序),使用.die()方法:

$(".clickme").die("click"); 
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