在我的随机测试中,我看到了一种行为,我将一个锚标记放在另一个锚标记内。我做了一个 jsfiddle 。
<a class="groupPopper">
<a class="name"> content</a>
</a>
但在开发者工具中它看起来不同:
我相信我们不能将锚标记放在另一个锚标记内,因为单击内部锚会将点击事件冒泡到父锚标记,这是不允许的。
我的假设正确吗?
原文由 Anoop 发布,翻译遵循 CC BY-SA 4.0 许可协议
在我的随机测试中,我看到了一种行为,我将一个锚标记放在另一个锚标记内。我做了一个 jsfiddle 。
<a class="groupPopper">
<a class="name"> content</a>
</a>
但在开发者工具中它看起来不同:
我相信我们不能将锚标记放在另一个锚标记内,因为单击内部锚会将点击事件冒泡到父锚标记,这是不允许的。
我的假设正确吗?
原文由 Anoop 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答1.4k 阅读✓ 已解决
2 回答812 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
1 回答779 阅读✓ 已解决
2 回答1.3k 阅读
2 回答738 阅读
1 回答697 阅读✓ 已解决
正如 @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>
。)