Consider the following snippet:
<div class="div-outer"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. <div class="div-inner" style="background:red"> Curabitur hendrerit vehicula erat, ut gravida orci luctus vitae. </div> </div> Now suppose the outer div has a live click associated with it. How do I make sure that the live click is not triggered when I click anywhere in the inner div?
Edit:
Here's the JS as requested
$(".div-outer").live("click",function(){alert("hi")}); This should not be triggereed when clicking on ".inner-div"
You have to add an event listener to the inner child and cancel the propagation of the event.
In plain JS something like
document.getElementById('inner').addEventListener('click',function (event){ event.stopPropagation(); }); is sufficient. Note that jQuery provides the same facility:
$(".inner-div").click(function(event){ event.stopPropagation(); }); or
$(".inner-inner").on('click',function(event){ event.stopPropagation(); });
An alternative solution is to add a CSS Pointer Events rule to the child element:
CSS:
#childElement { pointer-events: none; } JavaScript:
document.getElementById("childElement").style.pointerEvents = "none";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With