我使用$ .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>
答案 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上阅读一下,以便更好地了解其工作原理。