2014-01-23 61 views
1

我想在解除綁定點擊事件後綁定點擊事件。例如。如果你點擊按鈕一,然後解除綁定這個按鈕,當你點擊按鈕二時,它應該再次綁定按鈕一的點擊事件。但綁定點擊事件似乎不起作用。綁定點擊後解除綁定點擊

$('#one').on('click',function(){ <<---------------------- 
    alert('one clicked');        | 
    $(this).off('click');        click 
});              | 
$('#two').on('click',function(){      event 
    alert('two clicked');        | 
    $('#one').on('click'); >>---------not binding the----- 
}); 

demo


PS:不使用標記變量。

+0

請注意,在API中,'handler'是'.on()'所需的參數:http://api.jquery.com/on/ –

回答

2

定義一個click處理程序,而不是與anonymous函數綁定。使用on的綁定點擊方法需要提供您在#two點擊處理程序中未提供的事件處理程序

如果您查看關於.on(events [, selector ] [, data ], handler(eventObject))的文檔,您將在此處看到處理程序不是可選的

您可以傳遞false來代替處理函數,但這意味着您只有一個返回false的函數。

觸發事件時執行的函數。 False的值爲 也允許作爲簡單返回 false的函數的簡寫,jQuery api

$('#two').on('click',oneclickhandler); 

$('#two').on('click',function(){ 
    alert('two clicked'); 
    $('#one').on('click', oneclickhandler); 
}); 

function oneclickhandler(){ 
    alert('one clicked'); 
    $(this).off('click'); 
}); 
+0

謝謝。我認爲這是可選的。 –

+0

歡迎您訪問@ C-link – Adil

0

使用一個命名處理器和使用。一()註冊的處理程序

function handler() { 
    alert('one clicked'); 
} 
$('#one').one('click', handler); 
$('#two').on('click', function() { 
    alert('two clicked'); 
    $('#one').on('click', handler); 
}); 

演示:Fiddle

0

我只是想和它的工作有很大now.You可以使用bind

$('#one').on('click',clickevent); 

function clickevent(){  
    alert('one clicked');         
    $(this).off('click');     
}              
$('#two').on('click',function(){      
    alert('two clicked');         
    $('#one').bind('click',clickevent); 
}); 

Jsfiddle