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

回答編集履歴

2

`data-\*` 独自属性のコード追加

2016/02/03 09:34

投稿

think49
think49

スコア18194

answer CHANGED
@@ -5,7 +5,7 @@
5
5
  **(2016/2/3 16:33追記) jsfiddle で jquery.js を読み込む設定にしていなかったのと修正**
6
6
  - [Edit fiddle - JSFiddle](https://jsfiddle.net/jn0vrq5q/1/)
7
7
 
8
- ```JavaScript
8
+ ```HTML
9
9
  <input class="hoge" value="replaced!" />
10
10
  <p id="sample-1">#sample-1</p>
11
11
  <p class="hoge-hoge">Hello, World!</p>
@@ -34,4 +34,24 @@
34
34
  </script>
35
35
  ```
36
36
 
37
+ **(2016/2/3 18:33追記)**
38
+ 別解。`data-*` 独自属性を使えばスマートに書けます。
39
+
40
+ ```HTML
41
+ <input class="hoge" value="replaced!" />
42
+ <p id="sample-1" class="foo" data-target-selector=".hoge-hoge">#sample-1</p>
43
+ <p class="hoge-hoge">Hello, World!</p>
44
+ <p class="hoge-hoge">Hello, World!</p>
45
+ <p id="sample-2" class="foo" data-target-selector=".hoge-hoge-hoge">#sample-2</p>
46
+ <p class="hoge-hoge-hoge">Hello, World!</p>
47
+ <p class="hoge-hoge-hoge">Hello, World!</p>
48
+ <script>
49
+ 'use strict';
50
+ jQuery('.foo').on('click', {value: jQuery('.hoge').val()}, function handleClick (event) {
51
+ jQuery(this.getAttribute('data-target-selector')).text(event.data.value);
52
+ jQuery(this).off(event.type, handleClick); // 2回目以降は無意味なのでイベントを削除しておく
53
+ });
54
+ </script>
55
+ ```
56
+
37
57
  Re: mhl さん

1

jquery\.jsを読み込む設定にしていなかったのと修正

2016/02/03 09:34

投稿

think49
think49

スコア18194

answer CHANGED
@@ -2,7 +2,8 @@
2
2
  一つ気になったのですが、`$(.hoge).val()` の行で `SyntaxError` になりますね(セレクタが文字列化されていません)。
3
3
  その部分を修正してハンドラ関数を一つにまとめたコードが下記になります。
4
4
 
5
+ **(2016/2/3 16:33追記) jsfiddle で jquery.js を読み込む設定にしていなかったのと修正**
5
- - [Edit fiddle - JSFiddle](https://jsfiddle.net/jn0vrq5q/)
6
+ - [Edit fiddle - JSFiddle](https://jsfiddle.net/jn0vrq5q/1/)
6
7
 
7
8
  ```JavaScript
8
9
  <input class="hoge" value="replaced!" />