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 に答える