The code can probably explain this better than I can:
<div class="wrapper">
<div class="inner1"></div>
<div class="inner2"></div>
</div>
<script>
$('div').click(function(){
var class_name = $(this).attr('class');
do_something(class_name);
});
</script>
When I click on the inner1
div, it runs the do_something()
with both the inner1
div AND the wrapper
.
With the site being built, nested divs are going to happen a lot. Is there a dynamic way to fix this issue and only run the top level div (in this case inner1
)?
Use stopPropagation
:
$('div').click(function(e){
e.stopPropagation();
var class_name = $(this).attr('class');
do_something(class_name);
});
On the other hand: are you sure this is what you're trying to do? You might want to modify your selector ($('div')
) to only target the DIV's you want.
You need to prevent the event bubbling. With jQuery, you would do this:
$('div').click(function(e)
{
e.stopPropagation();
// Other Stuff
});
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