I have HTML similar to the following in my page
<div id="someDiv">
<img src="foo.gif" class="someImg" />
</div>
The wrapper div
is set up such that when it is clicked, it's background-color
changes using the following jQuery code.
$("div").click(function(event){
$(this).css("background-color", "blue");
});
I also have some jQuery associated with my img
that will do some other function (for the sake of argument I am going to display and alert box) like so:
$("img[class=someImg]").click(function(event){
alert("Image clicked");
});
The issue I have come across is that when I click on the img
, the event associated with the div
is also triggered. I'm pretty sure that this is due to the way that jQuery (or indeed JavaScript) is handling the two DOM elements - clicking the img
would require you to also technically click the div
, thus triggering both events.
Two questions then really:
- Is my understanding of the DOM/JavaScript flawed in some way or is this actually how things are occurring?
- Are there any jQuery methods that would allow me to perform actions on a child element without invoking those associated with its parent?