4

我想要做的是将函数 (X) 的名称作为参数传递给函数 Y,然后让函数 Y 创建一个触发函数 X 的事件处理程序。

我希望函数 Y 创建以下内容:

$('#form').submit(function(e){e.preventDefault();X();});

我试过了:

var name="X()";
X(name);

function Y(id){
    $('#element').submit(function(e){e.preventDefault();id;});
}

可以预见的是,这是行不通的。(我真的不相信它会!)但是如何做到这一点,要么(1)按照我的方式去做,要么(2)将整个 X 函数 wholus-bolus 传递给 Y?

谢谢。

4

2 回答 2

12

如果您感到怀疑,这里有一个演示(听起来更好):D

//create x
function x(){
    alert('im from x');
}

//create y that receives the function
function y(callback){

    //bind your handler which calls callback (which was x)
    $('element').submit(function(){
        callback();
    });
}

//call y that sends over a reference of x
y(x);
于 2012-04-13T08:25:17.997 回答
1

你的 X 对象必须是一个函数,而不是一个字符串。

function X() { /*code*/ }

您可以通过在 X 末尾返回 false 来阻止默认操作;

function X() { 
  /*code*/ 
  return false;
}

您可以在另一个函数中使用它,如下所示:

function Y(callback){
  $('#element').submit(callback);
}
Y(X);
于 2012-04-13T08:28:25.867 回答