我想在取消绑定click事件后绑定click事件。例如。如果单击按钮1,则解除此按钮的绑定,当您单击按钮2时,它应再次绑定按钮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-----
});
Ps:不使用标记变量。
答案 0 :(得分:2)
定义click
处理程序,而不是绑定anonymous
函数。使用on
绑定点击方法需要提供您在#two点击处理程序中未提供的事件处理程序。
如果您查看on .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');
});
答案 1 :(得分:0)
使用命名处理程序并使用.one()注册处理程序
function handler() {
alert('one clicked');
}
$('#one').one('click', handler);
$('#two').on('click', function () {
alert('two clicked');
$('#one').on('click', handler);
});
演示:Fiddle
答案 2 :(得分:0)
我刚刚尝试过它的工作很棒。你可以使用bind
$('#one').on('click',clickevent);
function clickevent(){
alert('one clicked');
$(this).off('click');
}
$('#two').on('click',function(){
alert('two clicked');
$('#one').bind('click',clickevent);
});