如何以编程方式删除附加的jQuery函数?

时间:2013-05-10 06:54:00

标签: javascript jquery

$.ready()我已宣布click功能,如下所示

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

});

我想在另一个javaScript函数中从click()中删除此$("#btnClk")。我怎么能这样做?

5 个答案:

答案 0 :(得分:1)

旧学校

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

新学校

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

答案 1 :(得分:1)

要注册点击处理程序,使用.on('click', ...)而不是.click - 后者可能会导致混淆,因为同样的功能也用于触发< / em>点击事件。

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

请参阅http://api.jquery.com/off/关于功能处理程序,名称空间等的警告(我的重点):

  

如果提供了一个简单的事件名称,例如“click”,该类型的所有事件(直接和委派)将从jQuery集中的元素中删除

  

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

请注意,在后一种情况下,如果函数首先没有名称,则无法指定函数名称,如处理程序为匿名函数的问题中的代码

答案 2 :(得分:1)

建议的解决方案的一个问题是它们删除了所有注册的点击事件处理程序,这可能是不可取的。

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

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

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

$("#btnClk").off('click', btnclickHandler);

答案 3 :(得分:0)

您可以使用unbind

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

almost same question

答案 4 :(得分:0)

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

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

这将从btnClk删除所有点击事件处理程序。