0

私はjQuery Datatablesを使用しており、1つのテーブルを持つページでは次のコードが正常に機能しますが、1つのページではタブを使用しており、それぞれにデータテーブルがあります。彼らのデザインは

var oTable = $('.dataTable').dataTable({....})

私が抱えている問題は、最初のテーブル以外のテーブルの行を削除しようとしたときです。class = delete のリンクとしての各行なので、このようなJavaScriptがあります

$('.delete').click(function(e) {
            e.preventDefault();
            row = $(this).closest("tr").get(0);
            oTable.fnDeleteRow(oTable.fnGetPosition(row));
        });

たとえば、2 番目のテーブルから行を削除しようとすると、row = 2 のようなものが取得され、最初のテーブルの対応する行が削除されます。

正確な oTable を識別する方法を考えるのに苦労しています。各データテーブルに数値 ID を割り当て、クリック関数で取得して、このように oTable の ID を取得しようとしました

    <table class="table dataTable repsonsive" id="4">

    $('.delete').click(function(e) {
            e.preventDefault();
            table = $(this).closest("table").attr('id');
            row = $(this).closest("tr").get(0);
            oTable[table].fnDeleteRow(oTable[table].fnGetPosition(row));
        });

oTable はコレクションのようには機能しないと思います。助言がありますか?

4

1 に答える 1

0

これは、あるデータテーブルから別のデータテーブルにデータを渡す方法です(jquery 1.9を使用しています)oTableをグローバルjavascript変数として割り当て、次にテーブルデータをdoc readyで宣言されたオブジェクトとして割り当てます

var oTable;

$(document).ready(function() {
var passData ={};

   $(document).on("click", "#example tbody tr", function(){

   var aPos = oTable.fnGetPosition(this);

   passData =  oTable.fnGetData(aPos);
   });

行をクリックした後、他のドキュメント準備完了イベント宣言全体で passData を使用できるようになりました

   $('#someDiv').on('click', function(){
    someFunction(passData);
    });

ただし、各行に削除ボタンがあると思われるあなたの問題については、ドキュメントの準備が整った変数aPosとして位置を設定し、削除機能を実行することを考えていました

var oTable;

$(document).ready(function() {
var passData ={};
var aPos;

   $(document).on("click", ".delete", function(){

   aPos = oTable.fnGetPosition(this);
   oTable.fnDeleteRow(oTable.fnGetPosition(aPos));

   return false;
   });

});

どのテーブルがどれかわからないという問題がある場合は、それらを異なる変数名として定義してください

var oTable, xTable, yTable, zTable;

次に、宣言によって必要に応じて関数を呼び出します

于 2013-06-19T13:51:21.073 に答える