编程语言
首页 > 编程语言> > 在Javascript匿名函数内部进行范围设计

在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