JSFiddle - React, Tailwind, and code Playground
HTML
<button id="btnVanilla">Vanilla</button>
<button id="btnjQuery">jQuery</button>
JavaScript
var double = function(){console.log(this.id + ' double')},
single = function(){console.log(this.id + ' single')};
document.getElementById('btnVanilla').addEventListener('click', makeDoubleClick(double, single));
function makeDoubleClick (doubleClickCallback, singleClickCallback) {
return (function () {
var clicks = 0,
timeout;
return function () {
var me = this;
clicks++;
if (clicks == 1) {
singleClickCallback && singleClickCallback.apply(me, arguments);
timeout = setTimeout(function () {
clicks = 0;
}, 400);
} else {
timeout && clearTimeout(timeout);
doubleClickCallback && doubleClickCallback.apply(me, arguments);
clicks = 0;
}
};
}());
}
jQuery.fn.single_double_click = function(single_click_callback, double_click_callback, timeout) {
return this.each(function(){
var clicks = 0, self = this;
jQuery(this).click(function(event){
clicks++;
if (clicks == 1) {
setTimeout(function(){
if(clicks == 1) {
single_click_callback.call(self, event);
} else {
double_click_callback.call(self, event);
}
clicks = 0;
}, timeout || 300);
}
});
});
}
$('#btnjQuery').single_double_click(single, double);