tr没有在ajax请求中删除。

时间:2015-10-13 06:13:32

标签: javascript jquery ajax

我试图使用最近的函数从表中删除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();
                    });

                }
            }
            )

    })

3 个答案:

答案 0 :(得分:0)

这是因为在ajax调用中元素的上下文丢失了。您可以使用ajax的context选项来设置单击的.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

答案 1 :(得分:0)

thispost success函数

中有不同的实例

&#13;
&#13;
$(".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();
        });

      }
    }
  )

})
&#13;
&#13;
&#13;

答案 2 :(得分:0)

函数内部的

$(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();
                });
            }
   });
});