0

现在我有了从 cgi-script 获取一些数据的代码。它完美地工作。

$.get('cgi/remote_user', function(data){
  $('#user_id').text(data);
});

但是如果我尝试设置$('#user_id').text为回调函数,它会失败Uncaught TypeError: Illegal invocation

$.get('cgi/remote_user', $('#user_id').text);

知道为什么吗?与..$('#user_id').text的功能相同function(data) {}

我怀疑这可能是无效的调用上下文,对吗?

4

2 回答 2

1

原因是当您获得对text函数的引用时,它不再附加到对象上。它将在全局上下文(窗口)而不是对象的上下文中调用。

您可以使用该proxy方法将函数绑定到上下文:

var user = $('#user_id');
$.get('cgi/remote_user', $.proxy(user.text), user);
于 2013-04-11T06:04:48.500 回答
0
$.get('cgi/remote_user', $('#user_id').text);

就像写:

var tmp = $('#user_id').text;
$.get('cgi/remote_user', tmp);

这相当于

$.get('cgi/remote_user', $.fn.text);

没有。$('#user_id')_this

你想要的是

$.get('cgi/remote_user', $.fn.text.bind($('#user_id')));
于 2013-04-11T06:07:57.077 回答