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 行だけが削除されます。

4

1 に答える 1

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;
}
于 2011-06-28T11:14:54.337 に答える