I have a tree of divs:
<div id="a" onclick="func"> <div id="b" onclick="func"> <div id="c" onclick="func"> </div> </div> </div>
When a click is made on a div it makes it's children invisible - ie click on "a" will turn "b" and "c" invisible.
function func{ if ($(childId).hasClass("visible")){ $(childId).removeClass("visible"); $(childId).addClass("invisible"); }
The problem is: a click on "b" will call "a"'s click and make "b" and "c" invisible. How do I disable the click on "a" using jQuery?
thanks
By a adding an onClick function for the child modal (content div) mouse click events are prevented to reach the 'closeLogin' function of the parent element.
stopPropagation() Event Method The stopPropagation() method prevents propagation of the same event from being called. Propagation means bubbling up to parent elements or capturing down to child elements.
By default when the onClick event of the child element is triggered, the event on the parent element would also get triggered, but the stopPropagation() method prevents this behavior.
You can add a handler for the child that will prevent the click event from propagating up:
function handler(event) { event.stopPropagation(); // now do your stuff } $('#a').add('#b').click(handler);
This way clicks to '#b'
will not propagate to '#a'
. Neither will clicks to '#c'
go to '#b'
, and hence not to '#a'
.
use
event.stopPropagation()
Stops the bubbling of an event to parent elements, preventing any parent handlers from being notified of the event.
when click on b and c
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