2010-03-09 61 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

相關問題