Estoy escribiendo una pequeña extensión jQuery que impide que un usuario haga doble clic en un enlace.Detener más controladores de eventos en un elemento
$.fn.preventDoubleClick = function() {
return this.click(function() {
var $t = $(this)
, retVal = $t.data('active') // check the internal flag
;
if (retVal || retVal === undefined) { // if ON...
$t.data('active', false); // set the internal flag to OFF
setTimeout(function() {
$t.data('active', true);
}, 1000); // after 1 second, set the internal flag to ON
console.log("allowed");
return true;
} else { // if OFF...
console.log("blocked");
return false;
}
});
};
el problema es que si hay otros controladores de eventos Click en los elementos, todavía fuego:
$('#myLink').click(function() {
console.log("Clicked");
});
$('#myLink').preventDoubleClick();
Y ahora cuando se hace doble clic en el enlace, me sale esto en mi registro:
permitió
hace clic
bloqueado
hace clic
Básicamente, necesito la función de clic dentro de preventDoubleClick
para evitar que todos los demás controladores de eventos se activen. ¿Cómo puedo hacer esto?
Además, "prevenirDoubleClick" es un nombre engañoso, después de eso no se previene -el usuario aún hace doble clic- usted simplemente bloquea que active el evento, creo ... – James