質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

15687閲覧

チェックボックスで選択した行のみを削除する機能

hide09090909

総合スコア68

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/04/28 06:59

追加ボタン(add)を押下するとjQueryで記述した行が指定のtable(sample_table)に追加され、
追加された行の1列目に配置したチェックボックスを押下すると、選択した行のみが削除される機能を持ったJSPを作成したいのですが、
下記のコードを実行すると、指定のtableに追加が行われるのですが、削除ボタンを押下すると、チェックボックスで選択を行っていない行まで全て削除されてしまいます。
おそらく、$(this).closest('tr').remove();のtrと指定しているところが良くないと考えていますが、どのように指定すれば、チェックボックスで選択した行のみを削除するには、
どのように指定すればよいでしょうか?
分かる方教えてください。

<table class="demo" id="demo1"> <thead> <tr> <th>1</th> <th>2</th> <th>3</th> <th>4</th> <th>5</th> <th>6</th> <th>7</th> </thead> <tbody id="sample_table"> <tr> </tr> </tbody> </table> <button type="button" id="add" name="sampleadd" class="btn margin-bottom" style="color: #ffffff; background-color: #40b740;">追加</button> <button type="button" id="del" name="sampledel" class="btn margin-bottom" style="color: #ffffff; background-color: #40b740;">削除</button> $('#add').click(function() { var tr = '<tr><td><input type="checkbox" name="checkbox" value="' + (cnt + 1) + '"></td><td>' + tesuto + '</td><td>' + "resuto21" + '</td><td>' + "tesuto3" + '</td><td>' + "tesuto4" + '</td><td>' + "tesuto5" + '</td><td>' + tesuto6 + '</td></tr>'; $('#sample_teble').append(tr); } }); $('#del').on("click", function() { $('#sample_table input[type=checkbox]:checked').each(function() { $(this).closest('tr').remove(); }); });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

del処理については見た感じ大丈夫そうですが、hasで判断すればeachしなくても済むかもしれません

javascript

1<style> 2.btn{color: #ffffff; background-color: #40b740;} 3</style> 4<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 5<script> 6$(function(){ 7 var cnt=0; 8 $('#add').on('click',function(){ 9 $('#sample_table').append( 10 $('<tr>').append( 11 $('<td>').append($('<input>').attr({type:"checkbox",name:"checkbox"}).val(++cnt)).append(cnt), 12 $('<td>').text('resuto2'), 13 $('<td>').text('resuto3'), 14 $('<td>').text('resuto4'), 15 $('<td>').text('resuto5'), 16 $('<td>').text('resuto6'), 17 $('<td>').text('resuto7') 18 ) 19 ); 20 }); 21 $('#del').on("click", function() { 22 $('#sample_table tr').has('input[type=checkbox]:checked').remove(); 23 }); 24}); 25 26</script> 27 28<button type="button" id="add" name="sampleadd" class="btn margin-bottom">追加</button> 29<button type="button" id="del" name="sampledel" class="btn margin-bottom">削除</button> 30 31<table class="demo" id="demo1"> 32<thead> 33<tr> 34<th>1</th> 35<th>2</th> 36<th>3</th> 37<th>4</th> 38<th>5</th> 39<th>6</th> 40<th>7</th> 41</thead> 42<tbody id="sample_table"> 43</tbody> 44</table> 45

投稿2017/04/28 07:28

編集2017/04/28 07:35
yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

へんなスペルミスとかを直せば、チェックボックスで選択した行のみを削除する動きは実現できていましたよ。
気になる点は、jQueryのclosestは1.8以降削除されているメソッドなのでparentsなどに変えたほうがよい点と、#sample_tableはtbodyではなくtableに指定すべきという点くらいです。

html

1<html> 2<head> 3<meta charset="utf-8"> 4<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> 5<script> 6$(function(){ 7 $('#add').on("click", function() { 8 var tr = '<tr><td><input type="checkbox" name="checkbox" value="' + "val" + '"></td><td>' + "val" + '</td><td>' + "resuto21" + '</td><td>' + "tesuto3" + '</td><td>' + "tesuto4" + '</td><td>' + "tesuto5" + '</td><td>' + "val" + '</td></tr>'; 9 $('#sample_table').append(tr); 10 }); 11 12 $('#del').on("click", function() { 13 $('#sample_table input[type=checkbox]:checked').each(function() { 14 $(this).closest('tr').remove(); 15 }); 16 }); 17}); 18</script> 19</head> 20<body> 21 22<table id="sample_table" class="demo"> 23<tr><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th></tr> 24</table> 25 26<button type="button" id="add" name="sampleadd" class="btn margin-bottom" style="color: #ffffff; background-color: #40b740;">追加</button> 27<button type="button" id="del" name="sampledel" class="btn margin-bottom" style="color: #ffffff; background-color: #40b740;">削除</button> 28 29</body> 30</html>

投稿2017/04/28 07:37

ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2017/04/28 07:41

> へんなスペルミスとかを直せば $('#sample_teble')とか、はじめ気が付かなかったです
hide09090909

2017/05/10 00:43

ご回答ありがとうございます。 ご指摘の通りにするとhtmlファイルでは実行できましたが、jspファイルでは実行できませんでした。 jspファイルで実行したいのですが、どのようにすればよいでしょうか?
hide09090909

2017/05/10 00:59

新しく質問を行います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問