0

ソート可能な列で発生する素敵なjQueryデータテーブルがあります。1) クリックされた列と 2) クリック時のソート方向をキャプチャする要求が来ました。datatables オブジェクト内のさまざまな並べ替え関連オブジェクトをループしましたが、これら 2 つの特異値を取得できないようです。

この質問の目的のために、最終結果を alert('You clicked the column ' + column) and alert('The sort direction when you clicked was ' + sort direction) のようなものにしたいと思います。

どうすればこれを達成できますか? いつもありがとうございます。

4

1 に答える 1

0

あなたの質問が正しく理解できれば、基本的に、これを達成するために必要な特定の情報は1 つだけです。それは、テーブル内の行 (ユーザーが並べ替えている行) の最初の位置です。

これを取得するにはさまざまな方法がありますが、おそらく最も簡単な方法は、テーブルを生成するときに各行のデータ属性を設定して、その行の初期位置を保持することです。

例:

$.each($YOURTABLE.children(), function(idx, val) { val.data('position', idx);});

あとは、sortstopイベントで値を取得し、その行の新しい位置と比較するだけです。

$YOURTABLE.bind('sortstop', function(event, ui) {
    //$(ui.item[0]) selects the user-selected row
    var oldPosition = $(ui.item[0]).data('position'),
        newPosition;    

    //get row's new position
    $.each($YOURTABLE.children(), function(idx, val) {
        if($(val) === $(ui.item[0]))
            newPosition = idx; //store new position
    }
    //now compare
    if(oldPosition > newPosition)
        ////alert user row (oldPosition) moved up
    else if(oldPosition < newPosition)
        ////alert user row (oldPosition) moved down

    //refresh all row positions using first code example
} 

});

うまくいけば、それはあなたを正しい方向に向けるはずです.

于 2012-10-19T18:55:55.230 に答える