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

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

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

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

Q&A

解決済

2回答

23853閲覧

【jQuery】onclickを指定したボタンの親要素のidを取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

jQuery

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

0グッド

0クリップ

投稿2016/06/08 21:55

編集2016/06/08 22:32

よろしくお願いします。

jQueryを利用して、押されたボタンの親要素のidを取得したいです。

html

1<div id="data001"> 2 <button class="btn1" value="1" onclick="btn1()"></button> 3 <button class="btn2" value="2" onclick="btn2()"></button> 4</div> 5<div id="Data002"> 6 <button class="btn1" value="1" onclick="btn1()"></button> 7 <button class="btn2" value="2" onclick="btn2()"></button> 8</div>

javascript

1function btn1(){ 2 var oya_id = $(this).parent('div').attr('id'); 3 alert(oya_id); 4}

結果はundefinedとなります。

001も002も中身はまったく同じものになります。
divの数は不定です。(状況により変動します。)
この状態で、「001のbtn1が押された時」に「001」を取得したいです。

onclickに同じ名前を付けているのがいけないのかと思い代替案を調べましたが
見つけることが出来ませんでした。

どのようにしたら親要素のidを取得できるでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

http://jsdo.it/katoy/u3ls に書いてみました。
イメージ説明

jquery らしくするため、 onlick での呼び出しでなく、クリックに対するイベントメソッドを定義して処理しました。

html

html

1<div id="001"> 2 <button class="btn1" value="1" >A</button> 3 <button class="btn2" value="2" >B</button> 4</div> 5<div id="002"> 6 <button class="btn1" value="1" >C</button> 7 <button class="btn2" value="2" >D</button> 8</div>

javascript

$(function() { $('.btn1').click(function(e) { var oya_id = $(this).parent('div').attr('id'); alert("jquery " + oya_id); }); });

onclick=... で書きたいなら、 onclick=btn1(this) のように this を渡して、btn1() 中では、この this をつかって処理してくことが必要です。
(this を渡していないのが、元の質問でメソッドが動作しなかったことの根本原因です。
興味があれば、その方法にも挑戦してみても良いとおもいます。)

参考:

投稿2016/06/08 22:35

katoy

総合スコア22324

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

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

退会済みユーザー

退会済みユーザー

2016/06/08 22:48

ありがとうございます。 無事、目的の結果を出せるようになりました。 onclickの方法も試してみましたがこちらはよく分からなかったので、勉強し直したいと思います。
guest

0

HTMLのIDは、数字から始めることはできません(参考)。

投稿2016/06/08 22:21

maisumakun

総合スコア145183

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

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

退会済みユーザー

退会済みユーザー

2016/06/08 22:32 編集

ありがとうございます。 idを001からdata001に変更しました。 なお結果に変化はありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問