
jQueryで、ボタンをクリックすると、当該ボタンと同じtrタグにあるtd.nameタグの中のtextをアラート表示させるプログラムを書いていますが、うまくいきません。
html
1<head> 2<script src="https://code.jquery.com/jquery-2.1.4.js"></script> 3<script> 4$(function(){ 5 $('button.delete').on("click",function(){ 6 alert($(this).closest('tr').html()); /*①*/ 7 alert($(this).closest('td.name').text()); /*②*/ 8 alert($(this).closest('tr td.name').text()); /*③*/ 9 }) 10}) 11</script> 12</head> 13<body> 14<table> 15 <tr> 16 <td class="id" >1</td> 17 <td class="name">A</td> 18 <td><button class="btn-default delete">ボタン1</button></td> 19 </tr> 20 <tr> 21 <td class="id" >2</td> 22 <td class="name">B</td> 23 <td><button class="btn-default delete">ボタン2</button></td> 24 </tr> 25</table> 26</body>
つまり、ボタン1をクリックすると「A」というアラートが出て、ボタン2をクリックすると「B」というアラートが出るようにしたいです。
私は、テストのために、上記のとおり、ボタンをクリック後のイベントハンドラーに3つのアラートを用意してみました。
私の当初の予想では、
javascript
1alert($(this).closest('td.name').text()); /*②*/ 2alert($(this).closest('tr td.name').text()); /*③*/
のどちらでもうまく動くのかと思いましたが、実際にやってみると、
アラートは出るのですが、何も記載のないアラートでした。
ちなみに、
javascript
1alert($(this).closest('tr').html()); /*①*/
は、
<td class="id" >1</td> <td class="name">A</td> <td><button class="btn-default delete">ボタン1</button></td> とアラート表示され、これは私の予想どおりの動きでした。私のセレクタに対する理解に誤りがあるのだと思います。
お分かりの方、ご教示頂ければ幸いです。
よろしくお願いいたします。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/12/06 09:24
2015/12/06 09:32