如何从事件传递命名函数

时间:2013-03-20 01:08:45

标签: javascript jquery

所以,我有一个简单的

$(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()

我会尽可能地,但我更喜欢前者作为更清洁的解决方案。

有没有人有其他想法?感谢。

1 个答案:

答案 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()

相同