Comment puis-je empêcher un événement onclick de déclencher l'élément parent lorsque l'on clique sur un enfant?

Je vais avoir deux problèmes liés à l'événement onclick, ils sont un peu similaires, donc je vais leur demander ici.

Première:

J'ai une case à cocher dans un div. L'entrée a un onchange de la fonction et de la div a une fonction onclick.

<div onclick="doSomething()">
     <input type="checkbox" onchange="doSomethingElse()" />
</div>

Le problème est quand j'ai cocher/décocher la case à cocher à la fois doSomething() et doSomethingElse() feu. Toutes les idées de comment arrêter cela de se produire? J'ai essayé de faire un onchange="doSomethingElse(event)" et le doSomethingElse(e) de la fonction, j'ai eu l'e.stopPropagation(); et ça ne marche pas.

Deuxième:

J'ai une image dans un div. La div a une fonction onclick, mais l'image ne fonctionne pas. L'image est, à dessein, plus grande que la div et déborde à l'extérieur de la div.

-----------------------
|        image        |
|   ---------------   |
|   |     div     |   |
|   |             |   |
|   ---------------   |
|                     |
-----------------------

Je veux seulement le onclick de feu si l'utilisateur clique dans les limites de la div de la boîte. Cependant, l'événement onclick déclenche également si vous cliquez sur une partie de l'image qui a débordé à l'extérieur de la div... des idées?

La première question est la plus importante pour moi que la seconde. Mais si quelqu'un peut répondre à la fois ce serait génial!

Merci d'avance pour votre aide,
Matt

source d'informationauteur