Remember event bubbling is taking place for ALL events.
I suspect you will need to stop the event propagation to resolve this
issue. This can be done one of two ways:
1) Return false from your click handler function.
$("#r1").click(function () {
window.console.log("hello");
return false;
});
2) call stopPropagation() method of the event object
$("#r1").click(function (e) {
window.console.log("hello");
e.stopPropagation();
});
Also, in your sample code, you have $('r1'). There is no tags called
"r1". I suspect you meant $("#r1"), and that this is just a typo in
your post. But you might want to check that.. :)
HTH
Shawn
Michael Nosal wrote:
> If I have a div with a label and input in it:
> <div id="tab">
> <input type="radio" id="r1" value="foo">
> <label for="r1">My Label</label>
> </div>
>
> and I add a click handler like so:
> $('r1').click(function() {
> window.console.log("hello");
> });
>
> Clicking the div or the radio button gets one call to the click function.
> Clicking the label element results in the click function being called twice.
> Known? Unknown? Workaround?
> Using jquery 1.2.1
>
> --Mike N.