JavaScript / jQuery - 重用元素的'Click'事件

时间:2011-10-29 14:01:23

标签: javascript jquery

我有一个元素,例如div。并附加一个“点击”事件。在jQuery中,它将是:

 $('#myDiv').click(function(){ 
    $(".class1").show();
 })

现在,我想分配一个新功能“myDiv#”,取代旧功能。我这样做了:

$('#myDiv').click(function(){ 
    $(".class23").hide();
})

但是当我在div上运行'click'时,我指定了这个疑问开始的函数。

问题:如何删除将使用属于元素的click事件运行的函数? (不使用新的点击事件重新创建元素...)

4 个答案:

答案 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++;
 })

只是一个例子..