tr 没有在 ajax 请求中删除。

Posted

技术标签:

【中文标题】tr 没有在 ajax 请求中删除。【英文标题】:tr didn't remove in ajax request. 【发布时间】:2016-01-10 18:33:20 【问题描述】:

我正在尝试使用最接近的函数从表中删除 tr。 此函数在 $.post 请求中正常工作,但是当在 post 请求中使用相同的脚本时,它不起作用。 我的代码是

$(".delete_cat").click(function() 
        var idd = $(this).val();

        $.post("<?php echo base_url() ?>category/delete",
            id:idd,
            function(data) 

                if (data === 1) 
                    var tr = $(this).closest('tr').remove();
                    tr.css("background-color","#FF3700");
                    tr.fadeOut(400, function()
                        tr.remove();
                    );

                
            
            )

    )

【问题讨论】:

this 从帖子success 函数调用时会有所不同.. 看我的回答***.com/a/33095435/2074346 最近做什么?我只是评论学习。 @hamaad。 api.jquery.com/closest@YoYo 【参考方案1】:

这是因为元素的上下文在 ajax 调用中丢失了。您可以使用 ajax 的上下文选项来设置单击的.delete-cart 元素的上下文:

   $.post("<?php echo base_url() ?>category/delete",
   id:idd,
   context:this,
   function(data) 
     if (data === 1) 
         var tr = $(this).closest('tr').remove();
         tr.css("background-color","#FF3700");
         tr.fadeOut(400, function()
         tr.remove();
     
   );

Context option in ajax

【讨论】:

【参考方案2】:

thispost success 函数中有不同的实例

$(".delete_cat").click(function() 
  var that = this
  var idd = $(that).val();

  $.post("<?php echo base_url() ?>category/delete", 
      id: idd
    ,
    function(data) 

      if (data === 1) 
        var tr = $(that).closest('tr').remove();
        tr.css("background-color", "#FF3700");
        tr.fadeOut(400, function() 
          tr.remove();
        );

      
    
  )

)

【讨论】:

【参考方案3】:

$(this)内部函数不是引用.delete_cat,而是窗口,缓存那些:

$(".delete_cat").click(function() 
   var $this = $(this);  // <----here
   var idd = $this.val();

    $.post("<?php echo base_url() ?>category/delete",
        id:idd,
        function(data) 
            if (data === 1) 
                var tr = $this.closest('tr').remove();
                tr.css("background-color","#FF3700");
                tr.fadeOut(400, function()
                    tr.remove();
                );
            
   );
);

【讨论】:

.delete_cat 是动态元素吗? 不,我的意思是,表是动态创建的吗?您是否尝试在点击处理程序上提醒某些内容?

以上是关于tr 没有在 ajax 请求中删除。的主要内容,如果未能解决你的问题,请参考以下文章

MVC 身份验证超时/会话 cookie 删除后的 Ajax 请求

如何在 jQuery 中使用 Ajax 请求发送 FormData 对象? [复制]

Ajax 删除请求返回 200 但触发错误

使用ajax请求访问文件后如何删除文件?

ajax请求回数组数据,Vue页面数组没同步问题

Ajax(jquery) 同时处理多个异步请求