2008-09-23 472 views
7

我想附加一个单击事件到一个按钮元素,然后删除它,但我不能让unclick()或unbind()事件按预期工作。在下面的代码中,该按钮是'棕褐色',点击事件起作用。事件处理jQuery unclick()和unbind()事件?

window.onload = init; 
function init() { 
    $("#startButton").css('background-color', 'beige').click(process_click); 
    $("#startButton").css('background-color', 'tan').unclick(); 
} 

如何从我的元素中删除事件?

回答

18

有没有这样的事情unclick()。你从哪里得到那个的?

你可以通过调用解除绑定从一个元素中删除个别事件处理程序:

$("#startButton").unbind("click", process_click); 

如果要删除所有处理程序,或者你使用匿名函数作为处理程序,可以省略第二个参数unbind()

$("#startButton").unbind("click"); 
+0

http://www.visualjquery.com/1.0.4.html unclick(fn) 从每个匹配元素中移除绑定的单击事件。您必须传递原始绑定方法中使用的相同函数。 – 2008-09-24 14:49:54

3

解除绑定是你的朋友。

$("#startButton").unbind('click') 
0

您确定要解除绑定吗?如果以后你想要再次绑定它,又是一次又一次?我不喜欢动态事件处理绑定/解除绑定,因为当你从代码的不同位置调用它们时,它们往往会失去控制。

你可能要考虑替代方案:

  • 更改按钮“已禁用”属性
  • 实行内部“process_click”你的逻辑功能

只是我的2美分,而不是一个通用解。

6

或者你可以有一个情况下,你要取消绑定点击功能你使用它之后,就像我只好:

$('#selector').click(function(event){ 
    alert(1); 
    $(this).unbind(event); 
});