在我的随机测试中,我看到了一种将锚标签放在另一个锚标签内的行为。我做了一个jsfiddle。
<a class="groupPopper"> <a class="name"> content</a> </a>
但是在开发人员工具中,它看起来有所不同:
我相信我们不能将锚标记放在另一个锚标记内,因为单击内部锚会导致click事件冒泡到父锚标记,这是不允许的。
我的假设正确吗?
aHTML语法禁止嵌套元素。HTML规范没有说明原因;他们只是强调规则。
从实际的角度来看,浏览器会在其解析规则中有效地实施此限制,因此与许多其他问题不同,违反规范将 不起作用。解析器有效地将<a>open a元素内的start标记视为在开始新元素之前隐式终止open元素。
<a>open a
因此,如果您编写<a href=foo>foo <a href=bar>bar</a> zap</a>,则不会获得嵌套元素。浏览器会将其解析为<a href=foo>foo</a> <a href=bar>bar</a> zap,即两个连续的链接,后跟一些纯 文本。
<a href=foo>foo <a href=bar>bar</a> zap</a>
<a href=foo>foo</a> <a href=bar>bar</a> zap
嵌套a元素没有内在的不合逻辑:可以实现它们,以便单击“ foo”或“ zap”激活外部链接,单击“ bar”激活内部链接。但是我看不到使用这种结构的理由,HTML的设计者也可能没有看到这种结构,因此他们决定禁止使用这种结构,从而简化了事情。
(如果您真的想模拟嵌套链接,则可以将普通链接用作外部链接,并将span具有适当事件处理程序的元素用作内部“链接”。或者,可以复制链接:<a href=foo>foo</a> <a href=bar>bar</a> <a href=foo>zap</a>。)
<a href=foo>foo</a> <a href=bar>bar</a> <a href=foo>zap</a>