0

私のスクリプト ページには 1 つの関数しかありませんが、次のエラーが表示されます: Uncaught TypeError: Illegal invocation. 正直なところ、私はこれまでこのエラーを見たことがなく、オンラインで見つけた他のケースはどれも私には当てはまらないようでした. 私のjqueryは以下にあり、他の部分は必要ないと思いますが、お知らせください。他の部分を投稿できます。

$(document).ready(function () {
    /*----UPDATE BOX REQUEST----*/
    $(".boxesChange").live("click", function () {
        entry = $(this).closest("tr");
        delivered = $(entry).find("#delivered");
        if ((delivered).is(":checked")) {
            deliveredBoolean = "1";
        } else {
            deliveredBoolean = "0";
        }
        boxesDelivered = $(entry).find("#boxesDelivered").val();
        bubbleWrapDelivered = $(entry).find("#bubbleWrapDelivered").val();
        supplyRequestId = $(entry).find(".boxesSupplyRequestId").val();

        $.post('boxesChange.php', {
            'delivered': delivered,
            'boxesDelivered': boxesDelivered,
            'bubbleWrapDelivered': bubbleWrapDelivered,
            'supplyRequestId': supplyRequestId
        }, function (response) {
            $(this).closest(".boxesScheduleEntry").css("background-color", "#ccffcc");
        });
        return false;
    });
});
4

2 に答える 2

1

問題はあなたの$.post電話にあります。あなたはjQueryオブジェクトであるに設定しようとしています、私はあなたが意味し'delivered'たと思います。delivereddeliveredBoolean

また、コールバック関数thisでは、あなたが思っているものではなく、要素ではなく、jqXHRオブジェクトです。

var $this = $(this);
$.post(
        'boxesChange.php', 
        {
            'delivered': deliveredBoolean,
            'boxesDelivered': boxesDelivered,
            'bubbleWrapDelivered': bubbleWrapDelivered,
            'supplyRequestId': supplyRequestId
        },
        function (response) {
            $this.closest(".boxesScheduleEntry").css("background-color", "#ccffcc");
        }
);
于 2012-04-19T17:15:12.523 に答える
1

エラーはこの部分の中にあると思います:

function (response) {
  $(this).closest(".boxesScheduleEntry").css("background-color", "#ccffcc");
}

thisここで、最も近いを使用して「tr」要素を取得する場合は、上記と同じになりたいと思います。しかし、ここthisには $.post imho のコンテキストがあります。

バインドするかvar boxChange = $(this),、イベント ハンドラー関数の先頭で実行し、後でキャッシュされた参照を使用する必要があります。

于 2012-04-19T17:05:30.283 に答える