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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

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

Q&A

解決済

3回答

1765閲覧

Tableの一行のaリンクを省きたい。

manabunbun

総合スコア39

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQuery

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

0グッド

1クリップ

投稿2016/10/04 06:36

テーブルの一行をクリックして、その行内にあるチェックボックスへチェックをいれて、背景色に色づけしたいと思っています。

出来る様にはなったのですが、クリックした行の中に"aリンク"が入っており"aリンク"だけは、機能しないようにしたいのです。

●jQuery $('#mcheck tr').click(function() { //tr要素からチェックボックスを探す。 var $check=$(this).children('td').children('input[type=checkbox]'); var $no=$(this).children('td').children('a').data("no"); if($check.prop("checked")) { //■checkboxにチェックがある場合。 $check.prop('checked',false); $checkno=0; $(this).removeClass('checkselect'); }else{ //■checkboxにチェックがない場合。 $check.prop('checked',true); $checkno=1; //クラスの追加 $(this).addClass('checkselect'); } });

セレクターで特定できるのかと思い、

$('#mcheck tr a:not(.newkomoku)').click(function() { ・・・・・

としましたが、うまくいかなかったのでクリックした部分が"aリンク"の時は、returnしようと思いついて

var target=$(e.target); if($(e.target[0])=="a.newkomoku") { return; }

e.targetからどうやって"aリンク"を判別すればよいのか分かりませんでした。
if文以降は、訳が分からず記述しています。

セレクターで特定したほうが良いのか、"aリンク"を判別したほうが良いのでしょうか。
それともそもそもこういった考え方が間違っているのでしょうか。
よろしくお願いします。

html <省略> <table id="mcheck" class="table table-striped table-bordered" cellspacing="0" width="100%"> <thead> <tr> <th>Check</th> <th>実行時</th> <th>項目名</th> <th>実行者</th> <th>内容</th> <th>ファイルパス</th> <th>アプリ</th> <th>提出先</th> <th>IMPATH</th> <th>NO</th> <th>ORDERBY</th> <th>CHECKNO</th> <th>SYAINCD</th> </tr> </thead> <tbody id="sortable"> <tr class="rowtr"> <td class="rank"><input type="checkbox" name="checkno" value="1" class="checkbox-inline"></td> <td class="rank"><a href="monthmanual/mcheckdataupdatedisp/" class="newkomoku">月末</a></td> <td class="rank"><a href="monthmanual/mcheckdataupdatedisp/" class="newkomoku">売上高予算表</a></td> <省略> <script src="./js/jquery-2.2.3.min.js"></script> <script src="./js/jquery-ui.js"></script> <script src="./js/bootstrap.js"></script> <script src="./datatables/js/jquery.dataTables.js"></script> <script src="./datatables/js/dataTables.bootstrap.min.js"></script> <script src="./js/komokuinput/m_checksheet.js"></script> <script src="./js/jquery.magnific-popup.js"></script>
CSS table#mcheck .checkselect { background-color: #A7AB15; font-color: #ffffff; font-weight: bold; }

*DataTablesを使用しています。
よろしくお願いします。

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

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

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

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

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

CyberMergina

2016/10/04 07:39

こんにちは。一つ質問させてください。「aタグの背景は白いままにしたい」ということでしょうか?
manabunbun

2016/10/05 23:37

aタグを含めて一行すべて背景色を変更したいです。
guest

回答3

0

こんにちは。

以下の書き方で、クリックされた要素に対して
「以降の処理を止める」書き方が出来ます。

javascript

1 2$('#mcheck tr').click(function(e) { 3 // クリックされた要素がaタグだったら、止める。 4 if ( e.target.tagName === "A" ) { 5 return false; 6 } 7 /* 今までの処理 */ 8});

投稿2016/10/06 00:46

CyberMergina

総合スコア295

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

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

manabunbun

2016/10/06 03:41

if ( e.target.tagName === "A" ) { return false; } "A"は、大文字でないとダメなのですね。 このやり方でうまくいきました。ありがとうございました。
guest

0

ベストアンサー

もうすこし簡単な例で・・・

CSS

1tr.checkselect td{background-Color:lime;}

javascript

1$(function(){ 2 $('#mcheck input[type=checkbox]') 3 .on('click',function(e){ 4 e.stopPropagation(); 5 }) 6 .on('change',function(){ 7 if($(this).prop('checked')){ 8 $(this).parents('tr').first().addClass('checkselect'); 9 }else{ 10 $(this).parents('tr').first().removeClass('checkselect'); 11 } 12 }).change(); 13 $('#mcheck a').on('click',function(e){ 14 e.stopPropagation(); 15 }); 16 $('#mcheck tr').on('click',function(e){ 17 $(this).find('input[type=checkbox]').prop('checked',function( index, prop ){return !prop;}).change(); 18 }); 19});

HTML

1<table id="mcheck"> 2<tr> 3<td><input type="checkbox" checked></td> 4<td><a href="#">test</a></td> 5<td>test</td> 6</tr> 7<tr> 8<td><input type="checkbox"></td> 9<td><a href="#">test</a></td> 10<td>test</td> 11</tr> 12<tr> 13<td><input type="checkbox"></td> 14<td><a href="#">test</a></td> 15<td>test</td> 16</tr> 17</table>

投稿2016/10/04 07:57

yambejp

総合スコア114843

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

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

manabunbun

2016/10/06 03:43

イベントをそれぞれに分けて記述すれば良かったんですね。 "e.stopPropagation();"は、知りませんでした。 大変参考になりました。ありがとうございました。
manabunbun

2016/10/06 03:45

イベントをそれぞれ記述すれば良かったのですね。 "e.stopPropagation();"は、知りませんでした。 大変参考になりました。 ありがとうございました。
guest

0

「$(e.target).prop('tagName')」や「e.target.tagName」でタグ名が取得できますが。。。

投稿2016/10/04 07:42

tkturbo

総合スコア5572

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

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

manabunbun

2016/10/06 03:46

e.target.tagName==="A" で取得できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問