cab*_*ret 24 javascript jquery undefined typeerror
在做一些简单的jQuery DOM操作时遇到了一个非常模糊的错误.
触发错误的行如下:
$(this).closest('tr').remove();
如标题所述,错误是:
未捕获的TypeError:无法调用未定义的方法'toLowerCase'
在文件中:jquery-1.6.2.js.
我已经尝试过使用jQuery 1.6.3和jQuery 1.5.1,但没有任何改变.我仍然一直在收到错误.
上面的行绑定到一个按钮,当单击该按钮时,提交一个AJAX POST请求,然后成功时,它将删除它自己的按钮<tr>.我已经尝试过另一种方式:
$(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中时为什么不能工作?对我没用?:(
这里有什么帮助?提前致谢.
Poi*_*nty 41
我不知道你期望this在你的"成功"处理程序中有什么价值,但我敢打赌,这不是你的想法.保存this在"$ .ajax()"调用之外:
var clicked = this;
$.ajax(
  // ...
  success: function(res) {
    if (res) {
      $(clicked).closest('tr').remove();
    }
    else {
      // ...
    }
  }
);