1

dataTables プラグインを使用して列の表示を切り替えるには、次のことだけを行う必要があることを知っています。

function fnShowHide( iCol ){
    /* Get the DataTables object again - this is not a recreation, just a get of the object */
    var oTable = $('#content-table-redesign').dataTable();

    var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
    oTable.fnSetColumnVis( iCol, bVis ? false : true );
}

しかし、IDまたはクラスまたは別の手段を使用して列を取得することは可能ですか?

問題は、ユーザーが列を自由にドラッグアンドドロップできるようにすることです。インデックスで移動すると、クリックして「id」(列0)を非表示にすることができますが、別の場所に移動し、現在はその位置にあるものは何でも「id」の代わりに 0 が非表示になります。

それか、何らかの方法でプラグインをだまして、移動先に関係なく列インデックスをリンクさせます。

編集

本文は基本的に同じHTMLです(各tdはその親と同じクラスを持っています)

 <table id="content-table-redesign" class="display">
            <thead>
                <tr>
                    <th class="ID">ID</th>
                    <th class="Name">Name</th>
                    <th class="Domain">Domain</th>
                    <th class="email">email</th>
                </tr>
            </thead>
            <tbody>

クラスを探しています。そのクラスを含むクラスは、広告とボディが同様に削除されるクラスだからです

4

3 に答える 3

4

最も簡単な答えは、dataTablesがこれをネイティブにサポートしておらず、クラスに基づいて手動でインデックスをプルする必要があるということです。幸いなことに、これは簡単です!

var iCol = $('#content-table-redesign tr').first().children('td.yourclass').index();
var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
oTable.fnSetColumnVis( iCol, bVis ? false : true );

th.yourclassもちろん、テーブルの構造によっては、セレクターを使用する必要がある場合があります。したがって、代わりに次のようになります。

$('#content-table-redesign thead tr').children('th.yourclass').index();

アップデート

HTMLに基づいて、セレクターは次のようになります。

$('#content-table-redesign thead tr').children('th.ID').index();

コンソールログが「0」であることに注意してください:http: //jsfiddle.net/YeAHB/

于 2011-09-08T13:18:30.417 に答える
0

私はこのプラグインを使用したことがありませんが、html 構造によっては、jQuery .index() を使用して子のインデックスを見つけることができます...

このフィドルを見てください:

http://jsfiddle.net/UwQ35/

于 2011-09-08T13:21:58.813 に答える