2009-10-15 31 views
57

私はテーブルの行を上下に動かすための上下矢印とリンクしていると言います。その行を1つの位置(jQueryを使用して)上または下に移動する最も簡単な方法は何ですか?jQueryでテーブル行を移動するには?

jQueryの組み込みメソッドを使用してこれを行う直接的な方法はないようですが、jQueryを使用して行を選択した後、移動する方法が見つかりませんでした。また、私の場合は、行をドラッグ可能にする(以前はプラグインで行っていた)ことはオプションではありません。あなたはまた、アップ/ダウン調整可能で非常に単純な何かができる

+1

を使用してみてください、あなたのプラットフォーム上でGridコントロールを使用するオプションを持っていますか? –

答えて

146

...あなたのリンクを与え

あなたは、リンクのクリックハンドラでこれをアップ配線できdownupのクラスを持っていますか。これは、リンクがグリッドの各行内にあることも前提としています。

$(document).ready(function(){ 
    $(".up,.down").click(function(){ 
     var row = $(this).parents("tr:first"); 
     if ($(this).is(".up")) { 
      row.insertBefore(row.prev()); 
     } else { 
      row.insertAfter(row.next()); 
     } 
    }); 
}); 

HTML:

<table> 
    <tr> 
     <td>One</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
    <tr> 
     <td>Two</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
    <tr> 
     <td>Three</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
    <tr> 
     <td>Four</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
    <tr> 
     <td>Five</td> 
     <td> 
      <a href="#" class="up">Up</a> 
      <a href="#" class="down">Down</a> 
     </td> 
    </tr> 
</table> 

Demo - JsFiddle

+0

@Quintin:これに感謝します。 tr行のスタイルが表示されない場合、ブロックを表示する前の行にどのように行を移動できますか?いずれかの行スタイルが表示されていない場合は、上下に移動するには複数回クリックする必要があります。なにか提案を ? – Paulraj

+1

最初の行の「上」リンクと最後の行の「下」リンクを非表示にする方法に関する提案はありますか? – rboarman

+0

@rboarman '$("。up、.down ")の行に沿って何か$ {" tr "最初の.up、tr:最後の.down"}。hide(); 'セレクタを正確に調整する必要があるかもしれません。 –

6
$(document).ready(function() { 
    $(".up,.down").click(function() { 
     var $element = this; 
     var row = $($element).parents("tr:first"); 

     if($(this).is('.up')){ 
     row.insertBefore(row.prev()); 
     } 
     else{ 
     row.insertAfter(row.next()); 
     } 

    }); 

})。

JSFiddle

+1

これで短縮できます:var row = $(this).closest( 'tr'); –

関連する問題