在锚标记内创建锚标记

新手上路,请多包涵

在我的随机测试中,我看到了一种行为,我将一个锚标记放在另一个锚标记内。我做了一个 jsfiddle

 <a class="groupPopper">
     <a class="name"> content</a>
</a>​

但在开发者工具中它看起来不同:

在此处输入图像描述

我相信我们不能将锚标记放在另一个锚标记内,因为单击内部锚会将点击事件冒泡到父锚标记,这是不允许的。

我的假设正确吗?

原文由 Anoop 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 193
2 个回答

正如 @j08691 所描述的,嵌套的 a 元素在 HTML 语法中是被禁止的。 HTML 规范没有说明原因;他们只是强调规则。

在实践方面,浏览器在其解析规则中有效地强制执行此限制,因此与许多其他问题不同,违反规范是行不通的。解析器有效地将打开的 a 元素中的 <a> 开始标记视为在开始新元素之前隐式终止打开元素。

因此,如果您编写 <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> 。)

原文由 Jukka K. Korpela 发布,翻译遵循 CC BY-SA 3.0 许可协议

嵌套链接是非法的。

A 元素定义的链接和锚点不得嵌套; A 元素不得包含任何其他 A 元素。

原文由 j08691 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题