Tengo una fila de elementos <a> que tienen controladores onclick :
<a onclick="selectCoin('MER');"> <div id="MER"> ... </div> </a> El interior del elemento secundario <div> se sobrescribe continuamente para actualizar parte del texto dentro de los botones. La actualización se realiza consultando el selector #MER y asignándolo a innerHTML . Noté que los controladores onclick no siempre se ejecutan si el elemento <div> se actualiza en segundo plano. A menudo, tengo que hacer clic en él dos o tres veces antes de que se invoque el onclick . Si hago que los elementos <div> sean estáticos, los controladores onclick se ejecutan de manera consistente y confiable.
¿Por qué la actualización del elemento secundario <div> hace que el controlador onclick deje de funcionar de manera constante? ¿Cómo soluciono este problema, mientras sigo actualizando el contenido del botón?
Para generar un evento de clic, un elemento debe recibir un mousedown seguido de un mouseup .
Si el elemento desaparece después de presionar el mousedown y se reemplaza por uno nuevo, el evento de clic no se envía.
Puede hacer su propia detección de mousedown/mouseup en el elemento <a> , pero si no se puede hacer clic en nada dentro del elemento, puede deshabilitar los eventos del mouse en los elementos secundarios, para que todos ocurran en el elemento <a>
en su div "MER":
style="pointer-events:none;"
Violín de trabajo:
Los eventos de click solo se generan si un par de eventos mousedown y mouseup se activan consecutivamente en el mismo elemento, lo que no sucederá si se intercambia entre eventos down y up.
La solución más simple sería reemplazar onclick en la fuente HTML con onmouseup . Qué efectos secundarios o comportamientos indeseables podría producir no es posible evaluar a partir de la información proporcionada.