在回调中发送$(this)

Mat*_*iby 7 jquery

我有这个jQuery点击事件

$('#sidebar .nav a span').click(function () {
  var sidebar_nav = $(this);
  $("#main").load("type_change.php?id="+id, successCallback);
Run Code Online (Sandbox Code Playgroud)

然后我有回调来做绑定

var successCallback = function(responseText, textStatus, XMLHttpRequest) {
  //doing all the binding in here
}
Run Code Online (Sandbox Code Playgroud)

有没有办法传递$(this)或者传递sidebar_navsuccessCallback函数,所以我可以用它做点什么

Fel*_*ing 7

你可以使用$.proxy:

$("#main").load("type_change.php?id="+id, $.proxy(successCallback, $(this)));
Run Code Online (Sandbox Code Playgroud)

这将设置this里面successCallback,无论你传递的第二个参数.

如果您this仍想参考$("#main"),那么您可以更改回调以接受另一个参数:

var successCallback = function(responseText, textStatus, XMLHttpRequest, target) {
  //doing all the binding in here
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

var sidebar_nav = $(this);
$("#main").load("type_change.php?id="+id, function() {
    var args = $.makeArray(arguments);
    args.push(sidebar_nav);
    successCallback.apply(this, args);
});
Run Code Online (Sandbox Code Playgroud)

target会参考sidebar_nav.