范围界定在 javascript 中是一团糟 :)
在 jQuery 1.4 中,您有一个内置的代理函数,可以将作用域带入任何回调,请参阅:http ://api.jquery.com/jQuery.proxy/ 。
但是自己创建一个很容易:
var proxy = function( fn, scope ) {
if ( typeof fn !== 'function' ) {
return function() {};
}
scope = scope || this;
return function() {
return fn.apply( scope, Array.prototype.slice.call(arguments) );
};
}
$(document).ready(function(){
$(".moderate").click(function(){
var url = $(this).attr('href');
$.get(url, proxy(function(data) {
$(this).parent().html(data);
}, this));
return false;
});
});
您还可以将范围放在变量中并稍后访问它:
$(document).ready(function(){
$(".moderate").click(function(){
var scope = this;
var url = $(this).attr('href');
$.get(url, function(data) {
$(scope).parent().html(data);
});
return false;
});
});