在$.ready()
我已宣布click
功能,如下所示
$(document).ready(function(){
$("#btnClk").click(function(clkevent){
//Doing Something Here
clkevent.preventDefault();
});
});
我想在另一个javaScript函数中从click()
中删除此$("#btnClk")
。我怎么能这样做?
答案 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)
答案 4 :(得分:0)