作用域是在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;
});
});
注意,'this'(因此'那')是一个DOM节点,'parent()'是一个jQuery函数。你需要做'$(that).parent()' – 2010-01-19 12:42:10
需要分配'$(this)'而不是'this',否则你不能在它上面调用'parent()',因为它赢了不是一个jQuery对象。 – 2010-01-19 12:43:46
我已经纠正它之前,你写你评论家伙! :) – kjagiello 2010-01-19 13:23:36