6

我想将一些额外的参数传递给 jQuery.Deferred done 回调,我现在这样做:

//dfd gets defined here as the return value of jQuery.ajax

var me = this;
var selector = $("#selector");

dfd.done(function(response){
    me.updated(response, selector);
});

我想知道是否有更好的方法来做到这一点?我以为我在某处读到过一种无需匿名包装函数即可传递参数的更简洁的方法,但我终其一生都记不起我在哪里读过它,或者我读到了什么。到目前为止,谷歌搜索一无所获。

4

1 回答 1

10

例如,为了将某些内容传递给.done回调,您需要将其传递进去.resolve

dfd.done( function(selector) {
   console.log( selector );
});
dfd.resolve( selector );

但在你的情况下dfd是一个$.ajax对象并且.resolve在内部被调用,所以你无法控制它。因此,唯一的方法是使用匿名函数和闭包。

顺便说一句:这个解决方案没有什么不干净的。

于 2012-09-07T10:20:23.000 回答