我需要在点击时绑定和解除绑定功能。 问题是我需要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);
答案 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") );