touchとhoverの両立
PCで主にWebサイトのGUIを調整していると、スマホなどのタッチスクリーン端末では、違和感が生じたりする。
前に、jQuery 動的に生成した要素へのhover()は使えない - ikapで、
$(document).on("mouseenter", "selector", func);
$(document).on("mouseleave", "selector", func);
を利用した、hoverを作った。 しかし、タッチスクリーン端末では1度タッチすると、hover状態になるだけで、もう一度タッチしないと、 既定の動作が起こらないという状態になった。
この状況の回避のため、スマホだと反応が遅れる :hover を心地良くする方法 : Sensebahnを参考にした。
参考では、
$(document).on('touchstart mousedown', 'selector', func);
$(document).on('touchend mouseup', 'selector', func);
としているが、mousedownとmouseupでは、自分が想定している動作と異なるので、
// スマホ用hover動作
$(document).on('touchstart', 'selector', func);
$(document).on('touchend', 'selector', func);
// PC用hover動作
$(document).on("mouseenter", "selector", func);
$(document).on("mouseleave", "selector", func);
のように、PCとタッチスクリーンで分けてみたところ、想定の動作をした。
PCでタッチスクリーンを持った端末がないので、その時の動作は知らない^^;
コメント