2015-10-13 83 views
2

我試圖從最近的函數中刪除tr。 這個函數在$ .post請求中正常工作,但是當在post請求中使用相同的腳本時,它不起作用。 我的代碼是tr在ajax請求中未刪除。

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

       } 
      } 
      ) 

    }) 
+0

'this'將是不同的,當它從後'success'函數調用..看到我的答案的http://計算器.com/a/33095435/2074346 –

+0

最接近的是什麼?我只是評論學習。 @hamaad。 –

+0

https://api.jquery.com/closest/ @YoYo –

回答

0

這是因爲元素的上下文在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

0

this是有內部postsuccess功能

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

 
     } 
 
    } 
 
) 
 

 
})

不同實例
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(); 
       }); 
      } 
    }); 
}); 
+0

它不工作。 –

+0

'.delete_cat'是動態元素? –

+0