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

时间:2013-05-21 12:53:11

标签: javascript jquery

我需要在点击时绑定和解除绑定功能。 问题是我需要click事件(也就是'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并且只需点击这样的元素:

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

1 个答案:

答案 0 :(得分:1)

第一选择正是您所需要的

 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") );
相关问题