在锚标签内创build锚标签

在我的随机testing中,我看到一个行为,我把一个锚标签放在另一个锚标签中。 我做了一个jsfiddle 。

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

但是在开发者工具中,它显得不同:

在这里输入图像描述

我相信我们不能把一个锚标签放在另一个锚标签内,因为点击内锚会将点击事件冒泡到不应该被允许的父锚标签。

我的假设是否正确?

正如@ j08691所描述的,嵌套a元素在HTML语法中是被禁止的。 HTML规范不说为什么; 他们只是强调规则。

实际上,浏览器在parsing规则中有效地执行了这个限制,所以与其他许多问题不同,违反规范是行不通的。 parsing器有效地将开放元素中的<a>开始标记视为在开始新元素之前隐式地终止开放元素。

所以如果你写<a href=foo>foo <a href=bar>bar</a> zap</a> ,你将不会得到嵌套的元素。 浏览器会将其parsing为<a href=foo>foo</a> <a href=bar>bar</a> zap ,即两个连续的链接后跟一些纯文本。

嵌套元素没有什么本质上的不合逻辑:它们可以通过点击“foo”或“zap”来激活外部链接,点击“bar”激活内部链接。 但是我没有看到使用这样一个结构的理由,HTML的devise者可能也没有看到,所以他们决定禁止它,从而简化事情。

(如果你真的想模拟嵌套链接,你可以使用普通链接作为外部链接,并使用一个合适的事件处理程序作为内部“链接”的span元素。或者,你可以复制链接: <a href=foo>foo</a> <a href=bar>bar</a> <a href=foo>zap</a> 。)

嵌套链接是非法的。

由A元素定义的链接和定位点不能嵌套。 一个A元素不能包含任何其他的A元素。

这是无效的HTML。

你不能嵌套a元素。

所以,根据定义,行为是不确定的。

我偶然发现了这个问题,当试图使一个div面板点击也有button。 我推荐的解决方法是使用javascript事件。

这里是我创build的codepen示例…. http://codepen.io/thinkbonobo/pen/gPxJGV

这是它的HTML部分:

链接embedded链接的示例….

 <div class=panel onclick="alert('We\'ll hi-ii-ii-ide')"> If you say run<br> <button onclick="app.hitMe(event)">more</button><br> <br> And if you say hide...<br> </div> 

注意如何捕获内部链接的事件,并使用stopPropagation()。 这对确保外部触发器不运行至关重要。

不要这样做。 我在我的应用程序面临同样的问题。 您可以简单地在顶部添加<div>标签,在子级添加<a>标签。 就像是:

 <div id="myDiv"><a href="#"></a> <a href="#"></a> </div> 

请确保在脚本文件中为myDiv添加了单击事件。

window.location.href = "#dashboardDetails";

你不能嵌套'一个'标签。 相反,将外部容器设置为“position:relative”,将第二个“a”设置为“position:absolute”,并增加其z-index值。 你会得到同样的效果。

 <div style="position:relative"> <a href="page2.php"><img src="image-1.png"></a> <a style="position:absolute;top:0;z-index:99" href="page1.php"></a> </div> 

这是一个不好的编码方式,但你可以试试这个 –

<a href="1"> aaaa <table> <tr> <td> <a href="2"> bbbb </a> </ td> </ tr> </ table> </a>