0

jqueryで、イベントハンドラー関数に追加のパラメーターを渡すにはどうすればよいですか?

だから例えば

mySaveFunction: function(i) {
var msg = "my message " + i;
$.ajax({
  ...
  success: this.successFunction, // i want to pass msg to successFunction
  ...
});

successFunction: function(response) {
   // do something with msg

},
4

5 に答える 5

3

ここでは無名関数でうまくいくはずです。ただし、無名関数の内部は未定義になるため、無名関数の外部へのthis.successFunction参照を格納する必要があります。this

var that = this;

$.ajax({
    ...
    success: function() {
        that.successFunction(msg);
    }
    ...
});
于 2012-07-15T21:59:14.690 に答える
0

そのためにクロージャーを使用できます。

mySaveFunction: function(i) {
    var self = this; // <=== Grab what `this` is
    var msg = "my message " + i;
    $.ajax({
      ...
      success: function(response) {
          self.successFunction(response, msg); // <=== Use it and `msg `here
      ...
    });
// ...

successFunction: function(response) {
   // do something with msg
},
于 2012-07-15T22:00:16.670 に答える
0

あなたが使用することができます$.proxy

mySaveFunction: function(i) {
    var msg = "my message " + i;
    $.ajax({
          ...
        success: $.proxy(this.successFunction, this, msg), // i want to pass msg to 
          ...
    });
},
successFunction: function(msg, response) {
    // do something with msg
},

ドキュメント部分適用はまだ文書化されていませんが、実装されています

于 2012-07-15T22:10:34.910 に答える
-1

クロージャーを使用できます。

mySaveFunction: function(i) {
var msg = "my message " + i;
$.ajax({
  ...
  success: function(response) {
       alert(msg);  /* msg is available here */
  }
  ...
});
于 2012-07-15T21:56:54.450 に答える
-1

匿名関数を使用します。

  success: function() {
    this.successFunction(parameters);
  }
于 2012-07-15T21:57:39.777 に答える