2013-05-21 52 views
0

我需要在點擊時綁定和解除綁定功能。 的問題是,我需要的click事件(也「這個」作爲點擊的元素將被罰款)使用名稱綁定和解除綁定功能

function clickElement(e) { 
    [...] 
    //here I need event or this clicked element 
    } 

這會工作,但沒有事件參數

$('.clickme').on('click', clickElement) 

這會工作,但我不能解除綁定的特定功能

$('.clickme').on('click', function(e){clickElement(e)}) 

這不起作用:

$('.clickme').on('click', clickElement(e)) 

爲什麼?

我需要因爲後來我需要解除綁定clickElement,而不是使用。點擊的。對,只有clickElement這樣的:

$('.clickme').off('click', clickElement); 
+0

它應該確定在第一種情況下 –

+0

這應該工作' - >'http://jsfiddle.net/f6qJF/2/ –

回答

1

第一個選擇是正是你需要的

function clickElement(e) { 
     console.log(e, this);  
    } 

    $('.clickme').on('click', clickElement); 

的之所以爲

$('.clickme').on('click', function(e){clickElement(e)}) 
$('.clickme').off('click', function(e){clickElement(e)}) 

不起作用是因爲它是一個新的匿名函數,它將不會映射到您在()中使用的那個。如果你需要這樣做,你必須保留一個參考。

var myFunc = function(e){clickElement(e); }; 
$('.clickme').on('click', myFunc).data("fnc", myFunc); 

,並刪除它

var elem = $('.clickme'); 
elem.off('click', elem.data("fnc")); 
+0

我沒有」 t實現了.on('click',clickElement)實際傳遞的點擊參數-_-'慚愧' – chickpeas