2017-10-23 6 views
3

ボタンをクリックしたときに各行のdivをスライドダウンしたいとします。現在、dataTableのrow.child()はこの形式でformat関数を呼び出します。DataTable slidedown row.child()

はフィドルを参照してください。http://jsfiddle.net/dhirajbodicherla/189Lp6u6/16/

function format (d) { 
    return '<div class="slider">Test Message</div>'; 
} 

<div class="slider">Test Message</div> 

function format(d){ 
    return $('div.slider'); 
} 

以下のように最後にjQueryのは、このようになりますよう、各行のためのdivを返すことが可能です。

$('#example tbody').on('click', 'td.details-control', function() { 
    var tr = $(this).closest('tr'); 
    var row = table.row(tr); 

    if (row.child.isShown()) { 
    // This row is already open - close it 
    row.child.hide(); 
    tr.removeClass('shown'); 
    } else { 
    // Open this row 
    row.child(format(row.data())).show(); 
    tr.addClass('shown'); 
    } 
}); 
+0

あなたは何をしようとしているのか不明なフィドルを追加してください –

+0

質問が編集されています。 – DPS

+0

これは役に立ちます - https://stackoverflow.com/questions/5309326/how-to-write-in-jquery-function-which-return-new-div –

答えて

0

あなたは.player要素のstyle="display: none"を追加し、必要なときにその1をアップ/ダウンスライドさせることができます。例えば

$('#example tbody').on('click', 'td.details-control', function() { 
    var tr = $(this).closest('tr'); 
    var row = table.row(tr); 

    if (row.child.isShown()) { 
     row.child().find('.player').slideUp(400, function(){ 
      // This row is already open - close it    
      row.child.hide(); 

      tr.removeClass('shown'); 
     }); 
    } 
    else { 
     // Open this row 
     row.child(format(row.data())).show(); 
     row.child().find('.player').slideDown(); 
     tr.addClass('shown'); 
    } 
}); 

また、あなたがformat()機能にjQueryの要素を返すことができ、row.child()も同様に引数としてのjQueryを受け入れます。詳細については、row.child() APIメソッドを参照してください。

コードとデモンストレーションについては、updated jsFiddleを参照してください。

代替ソリューションについてはSliding child rowsポストを参照してください。

+0

私は、jquery関数の内部にhtmlパーツを書きたくないと述べました。 – DPS

+0

私は答えを見つけました。関数フォーマット(d){ return $( 'div.slider')。html(); } – DPS