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 に答える