非法调用错误

我的脚本页面中只有一个函数,它给了我这个错误:Uncaught TypeError:非法调用。 说实话,我以前从未见过这个错误,我在网上找到的其他案例似乎都没有适用于我。 我的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; }); }); 

问题出在您的$.post调用中。 你试图将'delivered'设置为delivered ,这是一个jQuery对象,我假设你的意思是deliveredBoolean

此外,在回调函数中, 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"); } ); 

我假设错误在这部分内部:

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

在这里,我认为当你使用最接近的“tr”元素时,你希望this与上面相同。 但在这里, this是$ .post imho的背景。

你需要绑定或者更确切地说var boxChange = $(this),在事件处理函数的顶部,然后使用缓存的引用