2

所以,我有一个简单的

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

我会根据需要,但我更喜欢前者作为更清洁的解决方案。

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

4

1 回答 1

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

于 2013-03-20T01:11:23.950 回答