2017-05-04 17 views
0

以下のコードでは、jsonオブジェクトをパラメータとして受け取るutil.doSomething()メソッドがあります。 utilが何かをしているとき、responseをパラメータとして渡して、onDoneイベントハンドラを呼び出します。イベントハンドラに余分なパラメータを渡す

idupdateイベントハンドラに渡すことができるかどうかを知りたかったですか?

私はインラインイベントハンドラを使用してIDを取得できることがわかります。

$("#btn").click(function(){ 
    var id = $(this).attr('id'); 

    util.doSomething({ 
      property1: "SomeValue1", 
      property2: "SomeValue2", 
      onDone: function(response){ 
       // now i can use id here 
     } 
     }) 
    }) 
+0

に渡したい追加のパラメータにアクセスするには、関数の内部オブジェクト、そうではありません何ができるかを本当に知ることができます。 'onDone'を呼び出すオブジェクトにidを付けることができます。通常、 'this'を呼び出しオブジェクトまたは要素に設定してイベントを実行します。 –

+0

インライン関数を使用するとどうなりますか?それ以外の場合は 'doSomething'を修正して' id'パラメータを追加して 'onDone'に渡す必要があります – Jag

答えて

1

あなたは.bindメソッドを使用することができますし、引数は、あなたの `doSomething`が何をしているか知らない

$(function(){ 
    $('#btn').click(function(){ 

    var id = $(this).attr('id'); 

    util.doSomething({ 
      property1: "SomeValue1", 
      property2: "SomeValue2", 
      onDone: update.bind(this, id) 
     }) 
    }) 

    function update() 
    { 
     console.log(arguments); // inside arguments you should see all your parameters 
     // arguments[0] your id 
     // arguments[1] your response 
    } 
}) 
1

代わりのupdateonDoneを設定するように、あなたが望むの引数でupdateを呼び出す関数に設定することができます。

util.doSomething({ 
    property1: "SomeValue1", 
    property2: "SomeValue2", 
    onDone: function(response) { 
     return update(response, id); 
    } 
}) 
関連する問題