2010-03-09 30 views
1

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

<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

更改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,以便更好地理解它是如何工作的。

+0

谢谢,它的工作。 – mohang 2010-03-09 11:23:39

相关问题