2010-05-03 10 views
3

Je ai avec un événement onclick et, et à l'intérieur.
Lorsque je clique sur la case à cocher, l'événement div-onclick ne se déclenche pas - je voudrais qu'il se déclenche sans avoir à dupliquer l'onclick sur la case à cocher.Comment puis-je passer checkbox onclick event au parent onclick?

<div id="id-tag" onclick="do()"> 
    <span>text</span> 
    <img src="pic.jpg" /> 
    <input type="checkbox" name="mycheck" /> 
</div> 

Je connais le div-idtag mais idéalement, je voudrais éviter de le spécifier dans la case à cocher.
En utilisant un autre appel de fonction sur la case à cocher onclick pour appeler le parent est pas ce que je cherche, comme

onclick="run_parent_onclick()" 

mais cela est correct (non testé)

onclick="this.parent.click()" 

Répondre

1

Vous pouvez tirer l'événement click de div manuellement dans le onclick de l'entrée:

<input type="checkbox" name="mycheck" onclick="this.parentNode.click()" /> 

ou

<input type="checkbox" name="mycheck" onclick="document.getElementById('id-tag').click()" /> 
+0

Les deux fonctionnent, mais seulement si la case n'est pas désactivée et que la mienne est désactivée pour contrôler l'état checkedstate car la fonction div onclick peut être annulée ce qui signifie qu'un utilisateur peut cocher la case et annuler la fonction tant que la case n'est pas cochée . Je suppose que je dois penser à autre chose pour empêcher cela. – Kim

+0

Sachez que DOM '.click()' ne fonctionne que sur certains éléments de Safari. –

1

Utilisation addEventListener:

function do(e) { ... } 
document.getElementById('id-tag').addEventListener('click', do, true); 

Le "vrai" rend la capture d'événement.

+1

Comment est-ce que lier la case événement onclick à la div parent action onclick? J'ai aussi eu des centaines à des milliers de tels divs, ce pourquoi je cherche quelque chose de "global" comme mon exemple non testé. – Kim