如何知道在ajax响应回调中引发事件的目标元素?

时间:2010-03-09 09:13:43

标签: jquery ajax events

我使用$ .post使用jquery ajax发布到服务器。服务器返回响应后,我在回调函数中处理响应。在此回调函数中,如何知道单击了哪个元素。请检查以下内容。在函数handleServerResponse中,我想知道引发此事件的DOM元素。精确我想访问handleFavouritesUI函数中可用的$(this)元素。我在ASP.NET MVC中使用jquery。

    <script type="text/javascript">
    $(function() {

        $("a.favourite-on, a.favourite-off").click(handleFavouritesUI);
    });

    function handleFavouritesUI(e) {
        var link = $(this).attr("href");

        $.post(link, handleServerResponse);


        e.preventDefault();
        return false;
    }

    function handleServerResponse(data, textStatus) {
        response = eval(data);

        var targetElement = null;
        // TODO: get the target element.  

        if (!response.success) {
            showMessage(targetElement, response.reason, true);
        }
        else {
            //TODO: Modify the target element.  
        }
    }  


</script>

1 个答案:

答案 0 :(得分:1)

将handleServerResponse更改为内联函数...

function handleFavouritesUI(e) {
    var link = $(this).attr("href");

    $.post(link, function(data,textStatus){
        var targetElement = null;
        if (!response.success) {
            showMessage(targetElement, response.reason, true);
        }
        else {
            // See, the link object still holds the same reference.
            link.fadeOut().fadeIn();
        }
    });

    e.preventDefault();
    return false;
}

closures in JavaScript上阅读一下,以便更好地了解其工作原理。