相关元素的JavaScript事件

时间:2012-02-13 00:42:31

标签: javascript html events dom

我想知道以下行为是否正确。

我有一个标签元素通过“for”属性链接到输入元素,如果这会在单个用户点击标签上产生两个点击事件?具体来说,在窗口上放置一个单击监听器。然后,使用属性“for”定义带有链接到它的标签元素的复选框。单击标签文本。结果是将选中该复选框,您将看到两个单击事件。 http://jsfiddle.net/k55uD/2/

如果此行为正确,是否有更多此类案例,属性或其他内容?一些规格会很好。

感谢任何帮助。

P.S。我用示例更新帖子。

2 个答案:

答案 0 :(得分:3)

点击label会触发附加到onclick 附加到label本身的任何onclick的任何input功能。点击input将仅触发 onclick的{​​{1}}。

这很容易测试。见这里:

答案 1 :(得分:0)

DOM会分别处理每个元素,因此标签和它为'for'的元素都可以定义事件处理程序。所以,是的,如果两个元素都有一个onclick处理程序,并且点击在每个元素中,则两个事件都将触发。

然而,这是你必须定义的东西,你不会在标签上默认第二次点击,因为它是'for'另一个元素。

基本上,由您决定 - 您可以将其设置为引发两个事件或单个事件,但是开箱即用,您将为您定义处理程序的元素引发一个事件。

这很好地解释了事件和事件顺序,并提供了一些关于浏览器怪癖的建议。

http://www.quirksmode.org/js/events_order.html

编辑:

如果您具体,请在窗口上放置一个单击侦听器。然后,由于传播,您将获得两个事件,这将在提供的链接中进行解释。