未捕获的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值更改为其他内容后,错误消失。
原版的:
新:
- 如何格式化Highcharts的(x,y)对数据的日期时间
- 将标签放在用户突出显示的文本旁边
- 具有多种function的jquery插件
- 在客户端上传许多文件并压缩它然后在服务器上上传压缩文件
- 将Jquery和其他JS库添加到Firefox扩展
- jQuery.ready()等效的元素事件监听器?
- 为什么在jquery中成功调用ajax后才加载此函数?
- 如何获取元素后的文本节点?
- 如何修改JQuery自动完成框的输入?
Interesting Posts