0

$.ready()我已经声明了一个click函数,如下所示

$(document).ready(function(){
    $("#btnClk").click(function(clkevent){
        //Doing Something Here
        clkevent.preventDefault();
    });

});

我想click()$("#btnClk")另一个 javaScript 函数中删除它。我怎样才能做到这一点?

4

5 回答 5

1

老套

 $("#btnClk").unbind('click');

新学校

 $("#btnClk").off('click');
于 2013-05-10T06:55:52.283 回答
1

要注册一个单击处理程序,您应该使用.on('click', ...)而不是.click- 后者可能会导致混淆,因为相同的函数也用于触发单击事件。

取消注册处理程序,请使用.off('click')

请参阅http://api.jquery.com/off/关于函数处理程序、名称空间等的注意事项(我的重点):

如果提供了诸如“click”之类的简单事件名称,则该类型的所有事件(直接事件和委托事件)都将从 jQuery set 中的元素中删除

也可以通过在处理程序参数中指定函数名称来删除处理程序。

请注意,在后一种情况下,如果函数一开始就没有名称,则无法指定函数名称,就像处理程序是匿名函数的问题中的代码一样。

于 2013-05-10T07:10:15.967 回答
1

提议的解决方案的问题之一是它们删除了所有注册的单击事件处理程序,这可能不是我们所希望的。

对此的解决方案是将处理程序方法分离到两个参与方法共享的公共范围内,然后使用该方法引用和.off()来解决此问题

function btnclickHandler(clkevent){
    //Doing Something Here
    clkevent.preventDefault();
}

$(document).ready(function(){
    $("#btnClk").click(btnclickHandler);
});

$("#btnClk").off('click', btnclickHandler);
于 2013-05-10T07:13:34.690 回答
0

您可以为此使用unbind 。

$('#btnClk).unbind('click');

几乎相同的问题

于 2013-05-10T06:55:39.210 回答
0

您可以使用off()执行此操作:

$('#btnClk').off('click');

这将从btnClk.

于 2013-05-10T06:56:53.763 回答