とあるプログラムを書いているときに、ある要素をシングルクリックしたときの処理と、ダブルクリックしたときの処理を別々にしたいと思いました。
それをスマートに実現する方法がなく、自前で実現したのでその方法をメモ。
onclickとondblclickを両方登録すればいいのでは?
それがそうもいかないのです。
イベントの発火順序がシングルクリック→ダブルクリックとなっているようです。
そのため、両方登録してもシングルクリックの処理しか行われないみたいです。
ならどうする?
そこで、クリックされた状態を保持するフラグを用意し、クリック後一定時間以内に再度クリックした場合、ダブルクリックと判定します。
ごちゃごちゃ言うよりコードを示すほうが早いと思います。
こんな感じ。
1 | // グローバル変数 |
これで実現できます。