使用名称绑定和取消绑定函数

bind and unbind function with a name

本文关键字:绑定 函数 取消      更新时间:2023-09-26

我需要在点击时绑定和取消绑定一个函数。问题是,我需要点击事件(也'this'作为点击元素将是好的)

  function clickElement(e) {
  [...]
   //here I need event or this clicked element
  }

可以,但是没有事件参数

$('.clickme').on('click', clickElement)

可以,但是我不能取消特定函数

的绑定
 $('.clickme').on('click', function(e){clickElement(e)})

这个行不通:

 $('.clickme').on('click', clickElement(e))

为什么?

我需要使用。on而不是。click,因为之后我需要解绑定clickElement,只有clickElement,像这样:

  $('.clickme').off('click', clickElement);

第一个选择正是您所需要的

 function clickElement(e) {
      console.log(e, this);      
  }
  $('.clickme').on('click', clickElement);

原因

$('.clickme').on('click', function(e){clickElement(e)})
$('.clickme').off('click', function(e){clickElement(e)})

不起作用是因为它是一个新的匿名函数,它不会映射到on()中使用的函数。如果需要这样做,就必须保留对它的引用。

var myFunc = function(e){clickElement(e); };
$('.clickme').on('click', myFunc ).data("fnc", myFunc);

和删除

var elem = $('.clickme');
elem.off('click', elem.data("fnc") );