2014-02-12

[ js ]jQueryのonとtriggerを使って記述を分離

今さらだけど
jQueryのonとtriggerを使うと必要な処理をエレメントごとに記述できてコードがすっきりするらしい
と知ったのでメモ。

jQueryオブジェクト.on( イベント名, ファンクション )で、jQueryで取得したエレメントにイベント名の処理を追加して、
jQueryオブジェクト.trigger( イベント名 )はイベントを発火させるらしい。

参考サイト
.on() | jQuery API Documentation http://api.jquery.com/on/
.trigger() | jQuery API Documentation http://api.jquery.com/trigger/

イベント名には、clickとかmousemoveとか通常よくつかわれると思うイベント名の他、自作のイベント名も指定できるみたいで、その際はtriggerを使って発火させる。
当たり前だけど、イベント名がclickとかmousemoveの場合はtriggerを使わなくても発火される。


数字を入力してaddボタンを押すと、すぐ下にその個数分のテキストボックスのリストを追加する処理を、ボタンに対する処理とリスト追加の処理を分離した感じで書いてみた

  • 1
  • 2

上記のコード
●addボタンには(66行目から)、入力データ取得して数字確認。数字だったら背景黒の部分へ個数を通知(73行目)
●背景黒のulには(76行目から)、通知された数字の個数分テキストボックスのリストを追加

<style>
div#r, div#r * {
 margin: 0;
 padding: 0;
}
div#r {
 background: #ccc;
 width: 400px;
 color: #fff;
}
div#s {
 width: 400px;
 padding: 10px 0;
}
div#s input {
 margin: 0 5px;
}
div#s .n, div#s .add {
 -webkit-border-radius: 10px;
 -moz-border-radius: 10px;
 border-radius: 10px;
 font-size: 1.2em;
 padding: 0 10px;
}
div#t {
 width: 400px;
 background: #000;
 display: table-cell;
 vertical-align: middle;
 text-align: center;
}
div#t li {
 margin-top: 10px;
 list-style: none;
}
div#t li:last-child {
 margin-bottom: 10px;
}
div#t input {
 font-size: 150%;
 padding: 4px;
 -webkit-border-radius: 10px;
 -moz-border-radius: 10px;
 border-radius: 10px;
}
</style>

<div id="r">
<div id="s">
<input type="number" value="" name="n" class="n"><input type="button" name="add" class="add" value="add">
</div>
<div id="t">
 <ul>
  <li>1<input type="text"></li>
  <li>2<input type="text"></li>
 </ul>
</div>
</div>

<script>
$( function() {
 var $btn = $( 'div#s > input.add' );
 var $lst = $( 'div#t > ul' );
 var lst_n = $lst.children().length;

 $btn.on( 'click', function( e ){
  var n = $( this ).prev().val();
  if( n === '' || !!isNaN( n ) ){
   alert( '数字を入力してください' );
   return false;
  }

  $lst.trigger( 'listAdd', n );
 } );

 $lst.on( 'listAdd', function( e, n ) {
  for( ; n > 0; n-- ){
   $( this ).append( '<li>' + ( ++lst_n ) +  '<input type="text" /></li>' );
  }
 } );
} );
</script>

この程度だと分ける意味も無いと思うけど、ちょっとMVCっぽい?

2014-02-03

[ シェアレポート ]2014/01 GAで調べた訪問数に見る

2014年1月 仕事先のサイト(国内)の訪問数による色んなシェア 上位5つ(GA調べ)
(注意)特殊な媒体なので時期によってPC、スマホの割合が非常に上下します

全デバイス・OSシェア
Windows
38.04%
Android
31.91%
iOS
26.78%
Macintosh
2.61%
Linux
0.21%
全デバイス・ブラウザシェア
Internet Explorer
29.23%
Android Browser
28.67%
Safari
25.46%
Chrome
9.61%
Firefox
3.23%
全デバイス・ブラウザ+バージョンシェア
Android Browser+4.0
28.57%
Safari+7.0
16.35%
Internet Explorer+10.0
13.69%
Internet Explorer+8.0
5.68%
Safari+6.0
4.65%
全デバイス・OS+ブラウザシェア
Windows+Internet Explorer
29.22%
Android+Android Browser
28.67%
iOS+Safari
23.66%
Windows+Chrome
5.69%
Android+Chrome
3.04%
PC系縛り・ブラウザ+バージョンシェア
Internet Explorer+10.0
33.15%
Internet Explorer+8.0
13.89%
Internet Explorer+9.0
10.22%
Internet Explorer+11.0
9.99%
Chrome+31.0.1650.63
7.01%
スマホ系縛り・OS+バージョンシェア
iOS+7.0.4
27.66%
Android+4.2.2
13.67%
Android+4.0.4
13.60%
Android+4.1.2
11.53%
iOS+6.1.3
3.33%

計測方法
[ GAS ]シェアレポートをスクリプトで取得してメール送信させてみるのスクリプトで自動送信

全てGAのカスタムレポート

全デバイス・OSシェア
指標グループ:訪問数
ディメンションの詳細:オペレーティングシステム
全デバイス・ブラウザシェア
指標グループ:訪問数
ディメンションの詳細:ブラウザ
全デバイス・ブラウザ+バージョンシェア
指標グループ:訪問数
ディメンションの詳細:ブラウザ → セカンダリ ディメンション:ブラウザのバージョン
全デバイス・OS+ブラウザシェア
指標グループ:訪問数
ディメンションの詳細:オペレーティングシステム → セカンダリ ディメンション:ブラウザ
PC系縛り・ブラウザ+バージョンシェア
指標グループ:訪問数
ディメンションの詳細:モバイル(タブレットを含む)※"No"を選択>ブラウザ → セカンダリ ディメンション:ブラウザのバージョン
スマホ系縛り・OS+バージョンシェア
指標グループ:訪問数
ディメンションの詳細:モバイル(タブレットを含む)※"Yes"を選択>オペレーティング システム → セカンダリ ディメンション:OSのバージョン

何か間違えていたら指摘していただけると…


そして、誰かの何かの参考になれば…

archive