2011-06-28 67 views
2

我正在使用數據表,並且選擇了多行,並且我想對多行執行刪除操作。例如,我選擇了第2,3和4行,所以我希望同時刪除所有3行。刪除多行

<script> 
var oTable; 
var giRedraw = false; 

$(document).ready(function() { 
    /* Add a click handler to the rows - this could be used as a callback */ 
    $('#example tr').click(function() { 
     if ($(this).hasClass('row_selected')) 
      $(this).removeClass('row_selected'); 
     else 
      $(this).addClass('row_selected'); 
    }); 


    /* Add a click handler for the delete row */ 
    $('#delete').click(function() { 
     var anSelected = fnGetSelected(oTable); 
     oTable.fnDeleteRow(anSelected[0]); 
    }); 

    /* Init the table */ 
    oTable = $('#example').dataTable(); 
}); 

function fnGetSelected(oTableLocal) 
{ 
    var aReturn = new Array(); 
    var aTrs = oTableLocal.fnGetNodes(); 

    for (var i=0 ; i<aTrs.length ; i++) 
    { 
     if ($(aTrs[i]).hasClass('row_selected')) 
     { 
      aReturn.push(aTrs[i]); 
     } 
    } 
    return aReturn; 
} 

</script> 

通過此腳本,一次只能刪除1行。

+0

正確鍵入也不會傷害。 –

+0

我是這個網站的新手,所以ritenow無法接受任何答案,因爲聲望15是必須的。對不起, – user799100

回答

1

試試這個。

$('#delete').click(function() { 
    var anSelected = fnGetSelected(oTable); 
    oTable.fnDeleteRow(anSelected); 
    // previously it was anSelected[0] which select only frist element 
}); 

編輯

我做的fnGetSelected()函數的一些變化。可能會幫助

function fnGetSelected(oTableLocal) 
{ 
    var aReturn = new Array(); 
    var aTrs = oTableLocal.fnGetNodes(); 

    for (var i=0 ; i<aTrs.length ; i++) 
    { 
     // removed $() because this is already DOM element. 
     if (aTrs[i].hasClass('row_selected')) 
     { 
      aReturn.push(aTrs[i]); 
     } 
    } 
    return aReturn; 
} 
+0

不,這不能解決我的目的。即使它開始從第1行刪除,無論是否選擇。 – user799100

+2

如果anSelected [0]刪除第一行,並且選擇刪除所有內容,爲什麼不使用「for(var n = 0; n Nightwolf

+0

anSelected [0]刪除多行中的第一個選定行。 anSelected刪除第一行是否選擇第一行。我想如果我選擇2,5,8然後只有2,5,8應該被刪除,並在同一時間.. – user799100