我有一个页面,将在单击按钮时进行外部调用,然后更新按钮以反映成功。ajax 调用正常工作,但是当页面上有很多按钮时,我很难尝试操作按钮的文本。
当它是页面上唯一的项目时,它很容易匹配 $(".sabPauRes.ui-btn-text").text("Updated");
,但我不确定在使用每个函数时如何使用 $(this) 指向它。我读了一些关于“最接近”的内容,但它似乎并没有完成我想要的(或者我只是做错了)。
下面的代码示例!
$(document).ready(function(){
$('.sabPauRes').each(function() {
$(this).click(function(event) {
event.preventDefault();
$.ajax({
type: "GET",
url: this.href,
cache: false,
dataType: "text",
success: onSuccess
})
})
$("#resultLog").ajaxError(function(event, request, settings, exception) {
$("#resultLog").html("Error Calling: " + settings.url + "<br />HTTP Code: " + request.status);
})
function onSuccess(data)
{
// validate the result of the ajax call, update text, change button methods as needed
if (data == "Success") {
// PROBLEM -- how do I use $this to match a class that is nested within it?
$(this).closest(".ui-btn-text").text("Updated");
} else {
alert("Failed: " + data);
}
$("#resultLog").html("Result: " + data);
}
})
})
html
<body>
<div data-role="page">
<div data-role="content">
<div data-role="collapsible">
<h3>This is an item</h3>
<p>
<a href="/api/?resume=fhdh54" class="sabPauRes" data-ajax="false" data-role="button" data-inline="true" data-request="resume">Resume Download</a>
<div id="resultLog"></div>
</p>
</div>
</div>
</body>