2010-05-03 102 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

相关问题