0

我有一张桌子,其中有一列复选框。在用户选择一个特定的复选框后,假设从第 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;
                }
            });
        }
    }
}
4

1 回答 1

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>被点击的行。你可以使用它来做一些事情。

于 2013-04-15T12:28:22.373 回答