Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
function mouseClickDebounce( o, ev, handler ) {
if ( o.getAttribute( "data-_clk_" ) ) {
clearTimeout( Number( o.getAttribute( "data-_clk_" ) ) );
o.removeAttribute( "data-_clk_" );
ev.type = "_dblclick";
handler.call( o, ev );
}
else {
o.setAttribute(
"data-_clk_",
String( setTimeout(
function() {
o.removeAttribute( "data-_clk_" );
ev.type = "_click";
handler.call( o, ev );
},
200
) )
);
}
}
$( element ).on(
"click",
function( ev ) {
mouseClickDebounce( this, ev, function( ev ) { alert( ev.type ); } );
}
);
У Вас излишне сложно, хотя более правильно. Но это далеко не всегда нужно.
canvas. Ключевым моментом было отслеживать не только время между кликами, но и смещение курсора: активно работая с инструментом click per second может просто зашкаливать.

(event).detail, который больше 1, если это даблклик, триплклик или квадруплклик.
JQuery — разделение событий onСlick и onDblСlick