2013-09-16 73 views
0

我想分離一行,當用戶點擊行內的特定按鈕,並將其附加到另一個表一次又一次。jQuery分離並追加多次

我的下面的腳本分離並追加了另一行。然而,它繼續在下面的點擊上切換課程,它不會分離和追加。它也不能更新數據庫。

這段代碼有什麼問題?

$('.orderHideBtn').on('click',function(){ 
    var $oid = $(this).attr('id').split('-'); 
    $data = 'a=hideOrder&oid='+$oid[1]; 
    $.ajax({ 
     data: $data, 
     success: function(msg){ 
      $('#hbtn-'+$oid[1]).toggleClass("orderHideBtn orderShowBtn").toggleClass('icon-eye-close icon-eye-open').closest('tr').detach().appendTo('#ordersTBody2'); 
      console.log('#hbtn-'+$oid[1]); 
     } 
    }); 
}); 
$('.orderShowBtn').on('click',function(){ 
    var $oid = $(this).attr('id').split('-'); 
    $data = 'a=showOrder&oid='+$oid[1]; 
    $.ajax({ 
     data: $data, 
     success: function(msg){ 
      $('#hbtn-'+$oid[1]).toggleClass("orderShowBtn orderHideBtn").toggleClass('icon-eye-open icon-eye-close').closest('tr').detach().appendTo('#ordersTBody1'); 
      console.log('#hbtn-'+$oid[1]); 
     } 
    }); 
}); 

這些是HTML按鈕:

<span id="hbtn-{$o.orderID}" class="orderHideBtn icon-eye-close"></span> 

<span id="hbtn-{$o.orderID}" class="orderShowBtn icon-eye-open"></span> 
+0

detach()的用途是什麼?你在尋找.clone()而不是? –

+0

我想從活動訂單表中移除行並追加到被動訂單。反之亦然 – Kemal

+0

你不需要使用detach(),因爲appendTo()已經移動了元素。你應該提供一個jsfiddle來重現你的問題 –

回答

1

當你正在切換相對於hanlder類和選擇器並不重新評估,你應該委託事件,例如:

$(document.body).on('click','.orderHideBtn',function(){ 
    var $oid = this.id.split('-'); 
    $data = 'a=hideOrder&oid='+$oid[1]; 
    $.ajax({ 
     data: $data, 
     success: function(msg){ 
      $('#hbtn-'+$oid[1]).toggleClass("orderHideBtn orderShowBtn").toggleClass('icon-eye-close icon-eye-open').closest('tr').appendTo('#ordersTBody2'); 
      console.log('#hbtn-'+$oid[1]); 
     } 
    }); 
}); 

我刪除了detach()方法,因爲如我所知,這裏沒用。