未捕获的TypeError:无法调用未定义的方法’toLowerCase’

在做一些简单的jQuery DOM操作时遇到了一个非常模糊的错误。

触发错误的行如下:

$(this).closest('tr').remove();

如标题所述,错误是:

未捕获的TypeError:无法调用未定义的方法’toLowerCase’

在文件中: jquery-1.6.2.js

我已经尝试过使用jQuery 1.6.3和jQuery 1.5.1,但没有任何改变。 我仍然一直在收到错误。

上面的行绑定到一个按钮,当单击该按钮时,提交一个AJAX POST请求,然后在成功时删除它自己的

。 我已经尝试过另一种方法:

$(this).parent().parent().remove()但令我惊讶的是,这没有做任何事情。

我正在使用Chrome,以防万一,但我在FF中遇到了同样的错误。

编辑:

这是我的代码:

 $(".remove").live('click', function(e) { var str = $(this).attr('id').match(/\[(.*?)\]\[(.*?)\]/); var type = str[1]; var id = str[2]; // IF I PUT THE remove() HERE, IT WORKS. $.ajax({ type: 'POST', url: '/admin/ajax_remove_event_detail', data: {type: type, id: id}, success:function(res) { if(res) { $(this).closest('tr').remove(); // this gives me an error } else { // error handling } } }); e.preventDefault(); }); 

如果我把remove()放在if的某个地方之外,那就行了。 当它在ajax调用/ if中时为什么不能工作? 对我没用? 🙁

有什么帮助吗? 提前致谢。

我不知道你期望它在你的“成功”处理程序中的价值,但我敢打赌,这不是你的想法。 将其保存在“$ .ajax()”调用之外:

 var clicked = this; $.ajax( // ... success: function(res) { if (res) { $(clicked).closest('tr').remove(); } else { // ... } } ); 

在您的请求中,$(this)不是.remove元素。 这是一个封闭问题。

因此,您可以在之前将$(this)分配给变量并在之后调用它

 // assign this to a variable var val = this; // Use $(val).closest('tr').remove(); // It worked for me 

代替 :

 $(this).closest('tr').remove(); 

我在$ .get()请求上得到了完全相同的错误。

对我来说,这是jQuery中最奇怪的错误(我的版本1.8.3)。

我错误的原因是ID元素设置为“nodeName”的TD元素

将ID值更改为其他内容后,错误消失。

原版的:

  

新: