我正在做以下事情:

 <a href="www.stackoverflow.com">
   <button disabled="disabled" >ABC</button>
 </a>  

这工作得很好,但我得到一个HTML5验证错误,说“元素‘按钮’不能嵌套在元素‘按钮’。

谁能给我点建议,我该怎么做?


当前回答

在HTML5中,在链接中嵌入按钮元素是非法的。

最好在默认和:active(按下)状态下使用CSS:

body{background-color:#F0F0F0} /*只是为了突出边框*/ a.Button{填充:。background-color:#E0E0E0;font:normal 80% sans-serif;font-weight:700; a.Button:没有(主动):{border-left-color: # FFFFFF; border-top-color: # FFFFFF} a.Button:主动{border-right-color: # FFFFFF; border-bottom-color: # FFFFFF} <p><a class="Button" href="www.stackoverflow.com">点击我<a>

其他回答

说明及工作方案: 如何:div与onclick在另一个div与onclick javascript

通过在你的内部点击处理程序中执行这个脚本:

 if (!e) var e = window.event;
 e.cancelBubble = true;
 if (e.stopPropagation) e.stopPropagation();

您可以向按钮添加一个类,并放置一些重定向脚本。

我是这样做的:

<button class='buttonClass'>button name</button>

<script>
$(".buttonClass').click(function(){
window.location.href = "http://stackoverflow.com";
});
</script>

我刚刚跳进了同样的问题,我解决了它将“按钮”标签替换为“跨度”标签。在我的例子中,我使用的是自举。这是它的样子:

<a href="#register"> 
    <span class="btn btn-default btn-lg">
        Subscribe
    </span>
</a> 

不,根据W3C的HTML5 Spec Document,它不是有效的HTML5:

内容模型:透明,但不能有交互式内容后代。 a元素可以被包装在整个段落、列表、表格等等,甚至整个部分中,只要其中没有交互内容(例如按钮或其他链接)。

换句话说,你可以在<a>中嵌套任何元素,除了以下元素:

<一> <audio>(如果控件属性存在) < >按钮 <详细> <嵌入> < iframe > <img>(如果usemap属性存在) <input>(如果type属性不在隐藏状态) <注册机> <标识> <menu>(如果type属性处于工具栏状态) <object>(如果usemap属性存在) <选择> textarea > < <video>(如果控件属性存在)


如果你想要有一个链接到某处的按钮,将该按钮包装在<form>标签中,如下所示:

<form style="display: inline" action="http://example.com/" method="get">
  <button>Visit Website</button>
</form>

然而,如果你的<button>标签使用CSS样式,看起来不像系统的小部件…帮你自己一个忙,为<a>标记创建一个新类,并以同样的方式设置它的样式。

另一种选择是使用按钮的onclick属性:

<button disabled="disabled" onClick="location.href='www.stackoverflow.com'" >ABC</button>

这是可行的,然而,用户不会看到链接显示在悬停,因为他们会看到它在元素中。