jQuery

【jQuery】テーブル Tr 行を動的に追加・削除・並び替え・値を取得する方法

 
今回は、jQueryを使ってテーブルのTr行を動的に扱う方法を紹介します。
 

具体的には

  • tr(inputフォーム)を追加
  • tr(inputフォーム)を削除
  • tr を並び替える
  • input の値を取得する

という機能を実装します。
 

input フォームを動的に追加・削除する機能は、私が頂いたウェブアプリ開発の仕事でトップ3に入るほど需要がある機能でした。
 

ウェブアプリの開発をする場合には、絶対に知っておいて損はないです。
一度作っておけば必要な時すぐに使うことができますので、ぜひお試しください
 


 

開発環境

テキストエディタ: Coda2
ウェブブラウザ: Google Chrome
 

動画

【jQuery】テーブル Tr 行を動的に追加・削除・並び替え・値を取得する方法

 
 

解説

HTML

index.html というファイルを新しく作成し、以下のように HTML を書きます。(ファイル名は何でも大丈夫です。)

 


 
このままだと少しわかりにくいので、サイズや色を変更して使いやすくしてみましょう。
 
 

CSS

6~41行目を追加します。

 

このようになりましたか?

 
 

jQuery

jQueryを読み込む

jQuery を読み込む方法は2つあります。

  1. ファイルをダウンロードする
  2. CDN を利用する

今回はダウンロードはせずに CDN(コンテンツデリバリネットワーク)を利用します。

CDN を使うとインターネット経由でファイルを読み込むことができるので、ダウンロード不要で簡単に使うことができます。

CDN を提供しているサイトはいくつかありますが、今回は私がいつも使っている Google Hosted Libraries を紹介します。
 

「Google Hosted Libraries」で検索、または以下のリンクにアクセスしてください。
リンク:Google Hosted Libraries
 

jQuery と jQuery UI を使います。

赤枠の部分コードを、6, 17, 18行目に追加します。

 
 

jQueryのコードを書く場所

3~7行目を追加します。

 

ページの読み込みが完了してから実行されるように $(function(){…}); を書きます。
 
 

並び替え

まずは一番簡単な並び替え機能をつけてみます。必要なのはたった1行です。

4行目を追加します。

 

テーブル行に対して sortable を使う場合は tbody に指定する必要があります。
 
 

行を追加する

次に「+追加」ボタンを押したら Tr 行が追加されるようにしていきます。

6~9行目を追加します。

 

6行目
$('#addRow').click(function(){…});

id が addRow の要素(追加ボタン)がクリックされたら、function(){…} の処理を実行するという意味です。
 

8行目
$('tbody').append(html);

append() を使って tbody 内の一番最後に html を追加します。
 


 
 

Trを削除する

削除ボタンが押されたときの処理です。

6~8行目を追加します。

 

6行目
$(document).on('click', '.remove', function() {…});

class 名が remove の要素に対してクリックイベントをセットしています。
 

追加ボタンと削除ボタンを押した時はどちらもクリックイベントを使いますが、少しだけ書き方が異なっています。

追加:$('#addRow').click(function(){…});
削除:$(document).on('click', '.remove', function() {…});

 

これは、追加ボタンを押した時に追加される Tr 要素は、ページ読み込み時にはまだ作成されていないからです。

ページ読み込み時に存在しない要素に対してはクリックイベントが動作しないので、ページ読み込み後に動的に追加される要素に対しては document を使います。
 
 

7行目
$(this).parents('tr').remove();

クリックされた .remove の親要素 tr を remove(削除)します。
 

 
 

値を取得する

最後に、入力した値を取得してアラートで表示してみます。

6~12行目を追加します。

 

8~10行目
$('input[name="name"]').each(function(i, elem){
 values.push($(elem).val());
});

input の name 属性の値が name の要素に対して、each を使って各要素を取り出して values 配列に値を入れていきます。

i は何番目か、elem は要素を意味しています。好きな名前を使って大丈夫です。
 
 

11行目
alert(values.join(', '));

全ての要素の値を配列に入れたら、配列をカンマ区切りの文字列にして alert に表示します。
 


 
 

これで全て完成です!
上手く動かない場合は、一番下にサンプルコードを貼ってあるので比較してみてください
 

サンプルコード

 

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、携帯アプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
独学は難しそうと感じたら

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません。)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい????
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA