0

我需要在点击时绑定和取消绑定一个函数。问题是我需要点击事件(也是“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);
4

1 回答 1

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") );
于 2013-05-21T13:02:01.080 回答