teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記2です

2016/05/20 15:12

投稿

退会済みユーザー
answer CHANGED
@@ -11,6 +11,12 @@
11
11
  ---
12
12
 
13
13
  回答追加します。
14
+
15
+ コードの動作に関してですが
16
+ `<span class="radio" data-text="name,body">名前</span>`をクリックした際にname,body両方設定するclickイベントが設定されますよね。
17
+ その後に`<span class="radio" data-text="body">内容</span>`をクリックした時にclickイベントが上書きされるのではなく追加されるためname,bodyで設定したイベントも動作してしまいます。
18
+
19
+
14
20
  htmlのコードを変更しない前提でjavascriptのみ変更してみました。
15
21
  ```javascript
16
22
  $(function() {

2

追記

2016/05/20 15:12

投稿

退会済みユーザー
answer CHANGED
@@ -6,4 +6,29 @@
6
6
 
7
7
  ですのでこのソース場合`$(".radio").on("click", function() {`とすればきちんと値がとれると思います。
8
8
 
9
- 値を取得する際はちょっとしたミスで想定した値がとれないことがよくあるので`console.log`や`alert`を使って確認することをおすすめします。
9
+ 値を取得する際はちょっとしたミスで想定した値がとれないことがよくあるので`console.log`や`alert`を使って確認することをおすすめします。
10
+
11
+ ---
12
+
13
+ 回答追加します。
14
+ htmlのコードを変更しない前提でjavascriptのみ変更してみました。
15
+ ```javascript
16
+ $(function() {
17
+ var type='';
18
+ $(".radio").on("click", function() {
19
+ type = $(this).data("text");
20
+ });
21
+
22
+ $("a").on("click", function() {
23
+ if(type == 'name,body'){
24
+ $(".hoge1 input[data-text='name']").val($(this).find(".name").text());
25
+ $(".hoge1 textarea[data-text='body']").val($(this).find(".body").text());
26
+ } else{
27
+ $(".hoge1 input[data-text='body']").val($(this).find(".body").text());
28
+ }
29
+ });
30
+ });
31
+ ```
32
+
33
+ `$(".hoge")`がclickされた際に取得した値を`type`に入れ、`$("a")`がclickされた際に`type`の値で動作を振り分けるという形になります。
34
+ それと`$(".hoge1 input[data-text='body']")`では`textarea`に挿入されませんので``$(".hoge1 textarea[data-text='body']")``に変更しています。

1

説明内容漏れの追加

2016/05/20 15:09

投稿

退会済みユーザー
answer CHANGED
@@ -2,7 +2,7 @@
2
2
  $(".hoge").on("click", function() {
3
3
  if ($(this).data("text") == 'name,body') {
4
4
  ```
5
- の箇所ですが`.hoge`に対して`click`イベントを設定しているので`$(this).data("text")`は常に「undefined」になってしまいます。
5
+ の箇所ですが`.hoge`に対して`click`イベントを設定しているので`$(this)`とは`<div class="hoge">`のことになるので`$(this).data("text")`は常に「undefined」になってしまいます。
6
6
 
7
7
  ですのでこのソース場合`$(".radio").on("click", function() {`とすればきちんと値がとれると思います。
8
8