Considera lo siguiente:
<div onclick="alert('you clicked the header')" class="header">
<span onclick="alert('you clicked inside the header');">something inside the header</span>
</div>
¿Cómo puedo hacer que cuando el usuario haga clic en el intervalo, no div
active el evento de clic del?
javascript
html
events
dom
Sam
fuente
fuente
event
parece estar disponible en eventos en línea en IOS Safari también.Hay dos formas de obtener el objeto de evento desde una función:
Si necesita admitir navegadores heredados que no siguen las recomendaciones del W3C, generalmente dentro de una función usaría algo como lo siguiente:
que verificaría primero uno, y luego el otro y almacenaría el que se encontrara dentro de la variable de evento. Sin embargo, en un controlador de eventos en línea no hay un
e
objeto para usar. En ese caso, debe aprovechar laarguments
colección que siempre está disponible y se refiere al conjunto completo de argumentos pasados a una función:Sin embargo, en términos generales, debe evitar los controladores de eventos en línea si necesita algo complicado como detener la propagación. Escribir sus manejadores de eventos por separado y adjuntarlos a elementos es una idea mucho mejor a mediano y largo plazo, tanto para facilitar la lectura como para el mantenimiento.
fuente
onclick="foo(event)"
luego en la funciónfunction foo(event){/* do stuff with event */}
. Esto funciona en los modelos de eventos IE y W3C.Tenga en cuenta que window.event no es compatible con FireFox y, por lo tanto, debe ser algo similar a:
O bien, puede usar el estándar W3C para FireFox:
Si quieres ponerte elegante, puedes hacer esto:
fuente
<div onclick="myEventHandler(event);">
e.cancelBubble
devuelve falso en IE! No puede alcanzar lase.cancelBubble = true;
instrucciones. ¡Use la condición de SoftwareARM en su lugar!Use esta función, probará la existencia del método correcto.
fuente
Tuve el mismo problema - cuadro de error js en IE - esto funciona bien en todos los navegadores hasta donde puedo ver (event.cancelBubble = true hace el trabajo en IE)
fuente
Esto funciono para mi
fuente
Para las páginas web ASP.NET (no MVC), puede usar el
Sys.UI.DomEvent
objeto como contenedor del evento nativo.o, pase el evento como parámetro a la función interna:
y en alguna función:
fuente
Según esta página , en IE necesitas:
event.cancelBubble = true
fuente
No puedo comentar debido al Karma, así que escribo esto como una respuesta completa: De acuerdo con la respuesta de Gareth (var e = argumentos [0] || window.event; [...]) Usé este delineador en línea en el onclick para un pirateo rápido:
Sé que es tarde, pero quería hacerle saber que esto funciona en una sola línea. Las llaves devuelven un evento que tiene la función stopPropagation adjunta en ambos casos, por lo que intenté encapsularlas en llaves como en un if y ... funciona. :)
fuente
Esto también funciona: en el enlace HTML, use onclick con return como este:
Y luego la función comfirmClick () debería ser como:
fuente
confirm
no es relevante. Me refiero al valor de retorno . cita: En el enlace HTML, use onclick con return como este¿Por qué no simplemente verificar en qué elemento se hizo clic? Si hace clic en algo,
window.event.target
se asigna al elemento en el que se hizo clic, y el elemento en el que se hizo clic también se puede pasar como argumento.Si el objetivo y el elemento no son iguales, fue un evento que se propagó hacia arriba.
fuente
fuente
La mejor solución sería manejar el evento a través de una función de JavaScript, pero para usar una solución simple y rápida usando el elemento html directamente, y una vez que el "evento" y "window.event" están en desuso y no son compatibles universalmente ( https://developer.mozilla.org/en-US/docs/Web/API/Window/event ), sugiero el siguiente "código duro":
fuente