Tengo un div al que he adjuntado un onclick
evento. en este div hay una etiqueta con un enlace. Cuando hago clic en el enlace, onclick
también se activa el evento desde el div. ¿Cómo puedo desactivar esto para que si se hace clic en el enlace en el div onclick
no se active?
guión:
$(document).ready(function(){
$(".header").bind("click", function(){
$(this).children(".children").toggle();
});
})
código HTML:
<div class="header">
<a href="link.html">some link</a>
<ul class="children">
<li>some list</li>
</ul>
</div>
$(".header a")
con$(".header *")
y tengo que hayan sido designados niño (div, formas, de entrada, etc.).rel
caja de luz configurada funcioneO, en lugar de tener un controlador de eventos adicional para evitar otro controlador, puede usar el argumento de objeto de evento pasado a su controlador de eventos de clic para determinar si se hizo clic en un elemento secundario.
target
será el elemento seleccionado ycurrentTarget
será el div .header:fuente
currentTarget
. Una solución alternativa es reemplazarlo conthis
, como se sugiere en otra respuesta .Mejor manera usando on () con encadenamiento como,
fuente
Las respuestas aquí tomaron la pregunta del OP demasiado literalmente. ¿Cómo se pueden expandir estas respuestas en un escenario donde hay MUCHOS elementos secundarios, no solo una
<a>
etiqueta? Aquí hay una manera.Supongamos que tiene una galería de fotos con un fondo oscurecido y las fotos centradas en el navegador. Cuando hace clic en el fondo negro (pero no hay nada dentro), desea que se cierre la superposición.
Aquí hay algunos posibles HTML:
Y así es como funcionaría el JavaScript:
Esto detendrá los eventos de clic de elementos dentro
.contents
de cada investigación,.gallery
por lo que la galería se cerrará solo cuando haga clic en el área de fondo negro desvanecido, pero no cuando haga clic en el área de contenido. Esto se puede aplicar a muchos escenarios diferentes.fuente
Me topé con esta pregunta, buscando otra respuesta.
Quería evitar que todos los niños activen a los padres.
JavaScript:
jQuery:
fuente
O esto:
fuente
return false
al enlace, debe ser cliqueable.La solución más simple es agregar este CSS a los hijos:
fuente
Una forma más corta de hacerlo:
fuente