所以,我有一个简单的
$(document).on('#happyButton', 'click', function(event) {
event.preventDefault();
//more goes here...
});
我想把它变成类似于:
的东西doStuff = function(event) {
event.preventDefault();
//more goes here...
}
$(document).on('#happyButton', 'click', doStuff(event));
为了能够将此代码放在不同的位置,更重要的是在其他地方运行:
$(document).off('#happyButton', 'click', doStuff(event));
不幸的是,这给了我一个错误:
Uncaught TypeError: Cannot call method 'preventDefault' of undefined
现在,正确的答案是“使用骨干!”但这是以前代码的重构,我没有几周的奢侈来重构这一切。我也可以做一个简单的
$('#happyButton').off()
我会尽可能地,但我更喜欢前者作为更清洁的解决方案。
有没有人有其他想法?感谢。
答案 0 :(得分:3)
事件自动传递:
$(document).on('click', '#happyButton', doStuff);
function doStuff(event) {
console.log(event.target);
//event is available
}
它是:
.on(event, selector, handler)
不
.on(selector, event, handler)
与off()