マウスはclickするものだ.マウスで操作するウェブページならJavaScriptでclickイベントを仕掛けておけば問題なく動く.しかし,タッチ操作のデバイスだとclickでは動かないことがある.touchstart, touchmove, touchend, touchcancelの4つリスナーが定義されている.しかし,だからといってclickをtouchstartに書き換えたり,clickとtouchstartを併記さえすればよいわけではない.
もちろんそれらも必要な実装である.しかし,次の文はタッチでは動かない.
$('body').on('click', 'p', function () { ... });
$(document).on('click', 'p', function () { ... });
これに対して次のような解決がある.
- bodyやdocumentを書かず,具体的な要素を書く
- CSSで要素に{cursor: pointer;}を指定する
- もちろんonclickは動く
$('.container').on('click', 'p', function () { ... });
$(document).on('click', 'p', function () { ... });
--------------------------------------
p{cursor: pointer;}
<body>
<p id="child1" onclick="">...</p>
<p id="child2" onclick="">...</p>
</body>
