代码片段 → jQuery 代码片段 → 单击一次并解除绑定 单击一次并解除绑定 Chris Coyier 于 2009年11月22日 让某些事件在点击事件中发生,但只发生一次!在元素被点击一次后解除绑定点击处理程序。 $('#my-selector').bind('click', function() { $(this).unbind('click'); alert('Clicked and unbound!'); }); 另请参见下方 Ben 的评论,了解 jQuery 的 .one() 函数,它基本上是相同的功能。
这是否与以下内容具有相同的效果
$(‘#my-selector’).one(‘click’, function() {
alert(‘这只能发生一次’);
});
?
确实如此,感谢您的发布。
绑定公式确实允许您在需要时重新绑定点击事件。
不,两者都不同。
当您使用“one”时,处理程序最多每个元素每个事件类型执行一次。
这意味着如果选择器影响多个元素。这将只允许每个元素单击一次。
但是,当您显式地解除绑定事件时,事件将在触发一次后从所有元素中解除绑定。
我需要在应用了一些动画效果后重新绑定点击事件。我想要发生的事情是允许用户仅单击一次按钮,直到动画序列完成。换句话说,单击(仅允许一次,直到事件完成),解除绑定,动画,重新绑定单击。我遇到了一些麻烦,有什么建议吗?
也许可以不绑定和解除绑定事件,而是在执行您要执行的操作之前检查元素是否正在执行动画。
您可以使用 :animated 作为选择器的一部分来测试某些内容当前是否正在执行动画。
太棒了!谢谢各位。
不知道 one() 的技巧 :-)
art
嗨,
one() 是一项不错的功能,但并非总是有效的解决方案。当我们有一个函数,并在其中绑定点击事件以递归调用该函数时,我们需要在调用函数之前解除绑定回调——否则,我们将陷入无限循环。
function f()
{
$('foo').click(function(){
$(this).unbind('click');
f();
});
// 其他内容
}
我们无法使用 one() 函数做到这一点。但感谢您的提示!
好技巧,但要注意 unbind(‘click’) 会解除绑定所有点击事件。为此使用命名空间更安全。确保仅解除绑定正确的点击事件
$('#my-selector').bind('click.myEvent', function() {
$(this).unbind('click.myEvent');
alert('已点击并解除绑定我的事件!');
});
是否可以删除模糊时的解除绑定?
正如其他人所说,.one() 是最佳解决方案,但如果您需要绑定/解除绑定,在使用 $(‘#selector’).unbind(‘event’) 时应非常小心,因为所有事件的侦听器都将被解除绑定。
这将确保您只解除绑定一个侦听器。
请帮忙,当我单击提交按钮一次时,我的 submitHandler() 调用
当我再次单击提交按钮时,它将调用两次……
这是我的代码
姓名*
电子邮件地址*
电话号码*
公司
职位
主题
消息
提交
function submitHandler(){