2010-05-03 127 views
3

我有一個onclick事件,並在裏面。
當我點擊複選框時,div-onclick事件不會觸發 - 我希望它在不需要將onclick發佈到複選框上的情況下觸發。如何將checkbox onclick事件傳遞給父級onclick?

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

我知道div-idtag,但理想情況下希望避免在複選框內指定它。
使用上的複選框另一個函數調用的onclick調用父類的是不是我期待的一樣,

onclick="run_parent_onclick()" 

,但這是好的(未經測試)

onclick="this.parent.click()" 

回答

1

你可以在輸入的onclick手動觸發div的單擊事件:

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

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

這兩個工作,但只有當該複選框沒有被禁用,並且我被禁用來控制checkedstate,因爲div onclick函數可以被取消,這意味着用戶可以選擇框並取消該功能,同時複選框仍然被選中。猜猜我必須考慮其他事情來防止這種情況發生。 – Kim 2010-05-04 14:01:43

+0

請注意,DOM'.click()僅適用於Safari中的某些元素。 – 2014-06-27 20:11:11

1

使用的addEventListener:

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

「真」使事件捕獲。

+1

如何結合的複選框onclick事件父DIV的onclick行動? 另外我得到了數百到數千個這樣的divs,這就是爲什麼我正在尋找一些「全球」作爲我未經測試的例子。 – Kim 2010-05-03 10:47:38

相關問題