Tengo un panel de árbol y para cada nodo tengo eventos de un solo clic y doble clic. pero cuando hago doble clic, también se activa el evento de un solo clic. Entonces, ¿cómo evitar disparar un solo clic al hacer doble clic?Cómo evitar que se active el evento de un solo clic al hacer doble clic en extjs
Respuesta
En general, utilizar ambos eventos de un solo clic y doble clic se considera una mala práctica y altamente desaconsejado.
Sin embargo, si aún desea hacer esto, la única manera de poder distinguir entre un solo clic y doble clic es agregar artificialmente esta distinción midiendo el tiempo entre clics.
La idea es que no haga su acción de un solo clic de inmediato, sino que espere un segundo clic. Si aparece un segundo clic en breve, se activa su acción de doble clic. De lo contrario, su acción de un solo clic se activará después de la demora.
Su código será algo como:
var singleClickTask = new Ext.util.DelayedTask(singleClickAction), // our delayed task for single click
singleClickDelay = 100; // delay in milliseconds
function onClick() {
singleClickTask.delay(singleClickDelay);
}
function onDblClick() {
// double click detected - trigger double click action
doubleClickAction();
// and don't forget to cancel single click task!
singleClickTask.cancel();
}
function singleClickAction() {
// something useful...
}
function doubleClickAction() {
// something useful...
}
// setting event handlers on an Element
elem.on('click', onClick);
elem.on('dblclick', onDblClick);
Las desventajas obvias son:
- Hay un retraso de una sola acción de clic
- En diferentes sistemas operativos que no puede haber una configuración diferente para el intervalo entre clics que activaría un doble clic, por lo que el código simple de SingleClickDelay no es confiable
- El temporizador de JavaScript no es 100% exacto y los resultados pueden diferir en sistemas con un rendimiento diferente
No sé cualquier solución mejor, y otra vez, desalentar el uso de clics individuales y dobles, al mismo tiempo, esto por lo general conduce a una experiencia de usuario rota .
Creo que es mejor realizar la acción en el primer clic en lugar de en el segundo. Puede hacer esto configurando un valor booleano que verifique en cada evento de clic.
Este código demostró un enfoque
onGridRowClick: function(view, record, item, index, e, eOpts) {
if (record._task_in_progress) {
return;
}
// Let the second click as part of the double click to be ignored
record._task_in_progress = true;
// Emulating async task here
setTimeout(function() {
record._task_in_progress = false;
}, 1000);
}
- 1. ¿Cómo hacer que el evento de clic SOLO se active en DIV padre, no en hijos?
- 2. Interceptar clic simple o doble del mouse - solo ejecutar doble clic en el código al hacer doble clic
- 3. jQuery evitar que el evento de clic se active al desplazarse por un div
- 4. Evitar que el evento de clic del contenedor principal se active cuando se hace clic en el hipervínculo
- 5. Cómo evitar que el texto seleccione un lienzo de HTML5 externo al hacer doble clic en?
- 6. JSTree: ¿Hacer que el nodo se expanda cuando se hace clic solo en lugar de hacer doble clic?
- 7. Hacer doble clic en un evento en el elemento JList
- 8. jQuery: Al hacer clic, evitar el evento de mouseenter
- 9. Evitar que el evento click se active cuando se activa el evento dblclick
- 10. Evitar disparar evento de foco al hacer clic en div
- 11. Cómo evitar que un expansor WPF se expanda al hacer clic en el encabezado
- 12. ¿Cómo hacer doble clic y evento de un solo clic para el botón de enlace del control de Asp.net?
- 13. ¿Cómo evitar un doble clic usando jQuery?
- 14. Distinguir entre un solo clic y doble clic en Java
- 15. Deshabilitar el botón asp.net después de hacer clic para evitar hacer doble clic
- 16. al hacer clic en evento en wx.Panel?
- 17. C#: Cómo evitar que la verificación TreeNode ocurra en un evento de doble clic
- 18. Recibiendo el evento de doble clic
- 19. jQuery .load() Cómo evitar la doble carga al hacer doble clic en
- 20. Java: ignorar un solo clic con doble clic?
- 21. Rotar texto al hacer clic en evento
- 22. evitar la 'doble acontecimiento' cuando se hace clic ETIQUETAS dentro de un elemento con un evento de clic
- 23. Distinga entre hacer doble clic con el mouse y hacer clic con el mouse en wpf
- 24. ¿Cómo paso el evento al hacer clic en una vista?
- 25. Evento de doble clic en android
- 26. Winforms ListView - Detener comprobación automática al hacer doble clic en
- 27. ¿Cómo hacer que el botón no se pueda hacer clic después de hacer clic en él?
- 28. Javascript Haga clic en evento que no se activa al hacer clic en el relleno de un elemento
- 29. jquery fancybox - evitar cerrar al hacer clic fuera de fancybox
- 30. ¿Al hacer clic en el elemento principal, también se puede hacer clic en el elemento secundario?