Javascript - 使用参数引用全局函数的匿名函数中的闭包 - 我如何使用preventDefault?

时间:2012-08-06 02:42:53

标签: javascript submit closures

在以下代码中,我将在哪里使用preventDefault?我一直在测试它以使其工作但是没有找到取消默认submit操作的好方法。哪个函数需要捕获事件对象?

以下是代码:

f_name = 'someFunc' ;
f_args(1,2,3) ;

if(element.addEventListener) {
element.addEventListener('submit',(function(name,args,element) {
    return function() {
        window[name].apply(element,args) ;
    }
})(f_name,f_args,element)
,false) ; }

3 个答案:

答案 0 :(得分:1)

假设您只想在某些事件处理程序上阻止默认,您可以在用于处理特定事件的回调中使用preventDefault()。在您的示例中,这将是由name参数表示的全局函数,它将是someFunc全局函数。

如果您想为所有事件处理程序(对我来说没有多大意义)执行此操作,那么您在调用{{1}之前或之后的代码中执行此操作}。

答案 1 :(得分:1)

f_name = 'someFunc';
f_args = [1, 2, 3];
if (element.addEventListener) {
    element.addEventListener('submit', (function (name, args, element) {
        return function (e) {
            // here 
            e.preventDefault();
            window[name].apply(element, args);
        };
    })(f_name, f_args, element), false);
}

答案 2 :(得分:0)

将使用事件作为参数调用您的处理函数

return function(evt) {
    evt.preventDefault();
    window[name].apply(element,args) ;
}