我有一张桌子,其中有一列复选框。在用户选择特定复选框后,假设从第20行开始,并执行必要的操作,我想调用网格,但它应该指向我选中的行复选框。但目前还没有发生。而不是window.location,还有什么其他方法?我希望你能得到我的问题。请帮忙。提前致谢!以下是我的代码 -
function UpdateStatus(status, id, cb) {
var Status = status;
var Id = id;
var projectId = $("#projectId").val();
if ($("#" + status + id).is(':checked')) {
if (confirm("Are you sure?")) {
var data = { Status: Status, Id: Id, projectId: projectId };
$.ajax({
url: '@Url.Action("EditDispatchStatus", "BOM")',
type: 'GET',
data: data,
async: false,
success: function (data) {
window.location = '@Url.Action("DispatchStatus","BOM")?Id=' + data.result;
}
});
}
}
}
答案 0 :(得分:1)
首先你应该删除async: false
选项,因为这是一个阻塞调用,而不是一个AJAX调用,非常糟糕。
现在回答你的实际问题。以下是获取包含行的方法:
function UpdateStatus(status, id, cb) {
var Status = status;
var Id = id;
var projectId = $("#projectId").val();
var $checkbox = $("#" + status + id);
if ($checkbox.is(':checked')) {
if (confirm("Are you sure?")) {
var data = { Status: Status, Id: Id, projectId: projectId };
$.ajax({
url: '@Url.Action("EditDispatchStatus", "BOM")',
type: 'GET',
data: data,
context: $checkbox.closest('tr'),
success: function (data) {
// this will point to the <tr> that was clicked
}
});
}
}
}
注意我们如何将context: $checkbox.closest('tr')
传递给成功回调。因此,在此回调内this
将指向已单击的<tr>
行。您可以使用它来执行某些操作。