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

回答編集履歴

4

表現の修正

2019/11/05 13:55

投稿

think49
think49

スコア18194

answer CHANGED
@@ -27,7 +27,7 @@
27
27
  同じ名前にしてしまうと、後で変数名を変えた時にクラス名まで変えなくてはなりません。
28
28
 
29
29
  変数名を一つの名前で固定すると、関数と変数の間に**依存関係**が出来ます。
30
- 変数のスコープは出来るだけ狭くし、参照透過性を持つ設計にするより可搬性/汎用性のコードなります。
30
+ 変数のスコープは出来るだけ狭くし、参照透過性を持つ設計にするのが、可搬性/汎用性の観点から好ましいと感じます。
31
31
 
32
32
  ### data-*属性 + event.data
33
33
 

3

表現の修正

2019/11/05 13:55

投稿

think49
think49

スコア18194

answer CHANGED
@@ -29,7 +29,7 @@
29
29
  変数名を一つの名前で固定すると、関数と変数の間に**依存関係**が出来ます。
30
30
  変数のスコープは出来るだけ狭くし、参照透過性を持つ設計にすると、より可搬性/汎用性の高いコードとなります。
31
31
 
32
- ### data-* + event.data
32
+ ### data-*属性 + event.data
33
33
 
34
34
  ```HTML
35
35
  <input type="button" class="sample" value="push1" data-index="0">

2

data-* + event.data

2019/11/05 13:52

投稿

think49
think49

スコア18194

answer CHANGED
@@ -12,4 +12,41 @@
12
12
 
13
13
  他に、`data-*`属性に埋め込む手もあります。
14
14
 
15
+ ### 引数を減らす
16
+
17
+ > ```JavaScript
18
+ > function sample (cls) {
19
+ > $("."+cls).on('click',function(){
20
+ > (a[cls]).push(/*something*/)
21
+ > })
22
+ > }
23
+ > ```
24
+
25
+ クラス名と変数名(プロパティ名)を一つの変数にまとめて、引数を減らす設計は良いとは思いません。
26
+ クラス名と変数名は別の概念であり、同じ名前にする必然性はありません。
27
+ 同じ名前にしてしまうと、後で変数名を変えた時にクラス名まで変えなくてはなりません。
28
+
29
+ 変数名を一つの名前で固定すると、関数と変数の間に**依存関係**が出来ます。
30
+ 変数のスコープは出来るだけ狭くし、参照透過性を持つ設計にすると、より可搬性/汎用性の高いコードとなります。
31
+
32
+ ### data-* + event.data
33
+
34
+ ```HTML
35
+ <input type="button" class="sample" value="push1" data-index="0">
36
+ <input type="button" class="sample" value="push2" data-index="1">
37
+ <input type="button" class="sample" value="push3" data-index="2">
38
+ <script>
39
+ 'use strict';
40
+ function handleClick (event) {
41
+ console.log(event.data[jQuery(event.target).data('index')]);
42
+ }
43
+
44
+ function addClickHandler (selectorText, data, handler) {
45
+ jQuery(selectorText).on('click', data, handler);
46
+ }
47
+
48
+ addClickHandler('.sample', ['sample1','sample2','sample3'], handleClick);
49
+ </script>
50
+ ```
51
+
15
52
  Re: SugiuraY さん

1

表現の修正

2019/11/05 13:51

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,5 +1,7 @@
1
- イベントハンドらに値を渡すだけなら、`event.data` が用意されています。
1
+ ### event.data
2
2
 
3
+ イベントハンドラ関数に値を渡すのであれば、jQueryには `event.data` が用意されています。
4
+
3
5
  - [event.data | jQuery API Documentation](https://api.jquery.com/event.data/)
4
6
 
5
7
  ```JavaScript