【发布时间】:2014-01-17 01:20:58
【问题描述】:
我想知道如果我嵌套 2 个 <label> 标记会发生什么,结果发现,在所有浏览器的所有最新版本中,除了 Opera,单击内部标签仅导致单击该标签。 Here's a demo 嵌套标签标签的行为。
我的问题是:在处理嵌套标签中的点击事件时,浏览器的行为是否有任何标准?我只能找到关于 Gecko 行为的 this MDN section,但我找不到任何东西关于其他浏览器。
这对我来说很有趣的原因是因为如果可以嵌套标签标签并且仍然能够选择正确的输入及其最接近的周围标签,那么就有可能做出像 this。如果嵌套标签行为没有在任何标准中定义(因此任何浏览器都可以做他们想做的任何事情),这根本不是一个选项,即使在未来也是如此。任何此类选项卡的格式为:
<label>
<input type="radio" name="1">
<span>Shown label</span>
<div>Contents of the tab</div>
<!--repeat, put further identically-formatted <label>s here-->
</label>
当不嵌套标签时,这个选项卡系统已经成为可能,通过将 for 属性分配给标签,将 id 分配给输入,但是你必须担心每个输入的唯一 ID,并且这比这样做要付出更多的努力。 Here 是另一个演示(如您所见,现在无法正确标记已检查的标签)。
<label for="tabN">
<span>Shown label<span>
</label>
<input type="radio" name="1">
<div>Contents of the tab</div>
<!--repeat, put further identically-formatted structures here-->
PS:请不要用“这不是输入和标签的设计初衷!”来回答这个问题。我知道,我只是想知道这是否有可能实现,包括在 Opera 中。
【问题讨论】:
标签: html cross-browser standards opera web-standards