在Javascript匿名函数内部进行范围设计
作者:互联网
我正在尝试从ajax调用返回数据,然后我可以使用它.问题是函数本身被许多对象调用,例如:
function ajax_submit (obj)
{
var id = $(obj).attr('id');
var message = escape ($("#"+id+" .s_post").val ());
var submit_string = "action=post_message&message="+message;
$.ajax({
type: "POST",
url: document.location,
data: submit_string,
success: function(html, obj) {
alert (html);
}
});
return false;
}
这意味着在匿名’成功’函数内部我无法知道调用obj(或id)实际上是什么.我能想到的唯一方法就是将id附加到文档中,但这看起来有点过于粗糙.还有另一种方法吗?
解决方法:
您可以使用封闭范围内的变量,这种技术称为“闭包”.所以:
function ajax_submit (obj)
{
var id = $(obj).attr('id');
var message = escape ($("#"+id+" .s_post").val ());
var submit_string = "action=post_message&message="+message;
$.ajax({
type: "POST",
url: document.location,
data: submit_string,
success: function(html) {
alert(obj.id); // This is the obj argument to ajax_submit().
alert(html);
}
});
return false;
}
标签:jquery,javascript,scope,anonymous-methods 来源: https://codeday.me/bug/20190715/1463657.html