Tra*_* M. 2 javascript asp.net ajax jquery scope
假设我有一堆共享点击事件的链接:
<a href="#" class="do-stuff">Click me</a>
<a href="#" class="do-stuff">Click me</a>
<a href="#" class="do-stuff">Click me</a>
<a href="#" class="do-stuff">Click me</a>
Run Code Online (Sandbox Code Playgroud)
并在$('.do-stuff').click函数我执行一个JQuery ajax POST请求,用一些东西更新数据库,我得到一个成功的响应.在ajax完成之后,我只想将链接文本的值更改为我从服务器发回的任何内容...
$('.do-stuff').click(function () {
$.ajax({
type: "POST",
url: "MyWebService.asmx/DoSomething",
data: '{CurrentLinkText: "'+ $(this).text() +'"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
$(this).text(result.d);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
Run Code Online (Sandbox Code Playgroud)
});
这个调用很好,我确认"result.d"确实是来自服务器的文本,但文本没有改变.我认为在AJAX发布后,$(this)元素不再可访问?我该怎么做才能解决这个问题?
McG*_*gle 10
通常,当您丢失这样的上下文时,可以保存对该对象的引用.像这样:
function clickHandler() {
var that = this;
$.ajax( { url: '#',
success: function (result) {
$(that).text(result.d);
}
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2388 次 |
| 最近记录: |