我有一个元素,例如div。并附加一个“点击”事件。在jQuery中,它将是:
$('#myDiv').click(function(){
$(".class1").show();
})
现在,我想分配一个新功能“myDiv#”,取代旧功能。我这样做了:
$('#myDiv').click(function(){
$(".class23").hide();
})
但是当我在div上运行'click'时,我指定了这个疑问开始的函数。
问题:如何删除将使用属于元素的click事件运行的函数? (不使用新的点击事件重新创建元素...)
答案 0 :(得分:4)
你想要.unbind
。
您可以删除所有以前的绑定函数:
$('#myDiv').unbind('click');
或者,如果您只想取消绑定一个特定功能:
var show = function() {
$(".class1").show();
};
$('#myDiv').click(show);
然后:
$('#myDiv').unbind('click', show); // unbind first function
$('#myDiv').click(function() { // bind second function
$(".class23").hide();
});
请注意,.click(func)
只是.bind('click', func)
的快捷方式。
答案 1 :(得分:2)
如果您知道自己只想对元素进行一次点击,则可以使用one(),只需点击一下即可自动解除绑定:
$("#myDiv").one("click", function() {
$(".class1").show();
$("#myDiv").one("click", function(){
$(".class23").hide();
});
});
答案 2 :(得分:0)
使用JQuery unbind功能删除所有点击事件
$('#myDiv').unbind('click');
答案 3 :(得分:0)
在第一次点击活动中添加一个计数器。
var counter = 0;
$('#myDiv').click(function(){
if(counter>1){
$(".class23").hide();
}
else
$(".class1").show();
counter++;
})
只是一个例子..