2014-01-23 65 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