2011-11-09 7 views
1

私がしようとしているのは、新しいテーブルに置かれたテーブルの最後の列を取ることです。私はこれが同じクラス名を持つ複数のテーブルで動作するようにしたいという問題を解決しました。今すぐ最初のテーブルcolsを取り、それらを繰り返すだけです。私は理由を知っていますが、それぞれが同じクラス名を持っているにもかかわらず、個々の要素として各テーブルをどのようにターゲットにするのかがわかりません。jqueryを使って1つのテーブルの列を新しいテーブルに移動する

jqueryの

function fixLastColumn() {     
// makes new table 
    var nt = $('<table class="ft_fixedTable"></table>'); 

    $(".ft_FixedTable tr").each(function(i) { 
     nt.append('<tr class="ft_fixTR"><td class="ft_fixTD">'+$(this).children('td:last').html()+'</td></tr>') 
    }) 
    nt.appendTo('.fixedDiv'); 

    // remove last column 
    $('.ft_FixedTable tr').each(function(i) { 
    $(this).children('td:last').remove(); 
    }); 
    } 

$(document).ready(function() { 
    fixLastColumn(); 
}); 

HTML

<table class="ft_FixedTable"> 
    <thead> 
     <tr> 
     <td>Title 1</td> 
     <td class="ft_fixedCol">fixed one</td></tr> 
    </thead> 
    <tr> 
    <td>Content Content Content Content Content</td> 
    <td>Fixed content </td> 
    </tr> 
</table> 

<div class="fixedDiv"></div> 

答えて

2
あなただけの内容コピーするのではなく、テーブル細胞自体を移動するためにJavaScriptを使用することができます

:として

function fixLastColumn() { 
    // makes new table 
    var nt = $('<table id="ft_fixedTable_2" />'); 

    $(".ft_FixedTable tr").each(function(i) { 
     $('<tr class="ft_fixTR"/>') 
      .append($(this).children('td:last')) 
      .appendTo(nt); 
    }) 
    nt.appendTo('.fixedDiv'); 
} 

$(document).ready(function() { 
    fixLastColumn(); 
}); 

を(小さいが潜在的に重要)の最適化は、しかし、あなたが代わりにIDを使用する必要がありますあなたのテーブルやdivを識別するためのクラス:

http://jsfiddle.net/mblase75/TVpHp/

+0

私は何をしようとしていた正確にありがとうございました:)私はまだこれが何であるかを把握しようとしているので、私はやっているとどのように実際に働く私はそれを得ると思う。 – mustafa

+0

うれしい私は助けることができます。あなたの好きな答えを受け入れることを忘れないでください:http://meta.stackexchange.com/q/5234/171394 – Blazemonger

1

それはあなたがft_FixedTableを選択しているという事実とは何かを持っているかもしれませんが、あなたは新しいテーブルを割り当てるクラスがft_fixedTableです。ケース番号fの小文字に注意してください。


これはあなたが進めていることですか? http://jsfiddle.net/hunter/NzbHs/

+0

ご返信ありがとうございます。私はこれで初心者のビット:( – mustafa

1
$(".ft_FixedTable").each(function() { 
    var $last = $("td:last", this).remove(); 

    $('<table class="ft_fixedTable"></table>') 
    .append('<tr class="ft_fixTR"><td class="ft_fixTD">' 
      + $last.html() 
      + '</td></tr>' 
) 
    .appendTo('.fixedDiv'); 
}); 
1

私が正しくあなたの質問を理解していた場合は、トン彼は.each()メソッドは、セレクタの最初の項目(この場合はft_FixedTableクラスの最初のテーブル)でのみ機能します。あなたは、このようにそれをやってみてください:

$(document).ready(function() { 
    $('.ft_FixedTable').each(function() { 
     var index = $('tr td:last', this).index(); 
     $('tr td', this).eq(index).remove(); 
    }); 
}); 

これが最後の列のインデックスを検索し、tdその現在のテーブル内のすべての行から削除されます。

+0

私がやろうとしていたのは、最初のテーブル(テーブルA)を選択し、最後のカラムを削除して追加します新しいテーブル(テーブルB)に移動し、次のテーブル(テーブルA)などに移動します。私の泥酔したスキルは私にこのことをする方法を見つけようとしました。 – mustafa

関連する問題