问题 如何将整个引导面板作为超链接


我正在使用twitter bootstrap的面板组件。我有以下代码

<div class="panel panel-info">
            <div class="panel-heading">
                <div class="row">
                    <div class="col-xs-6">
                        <i class="fa fa-comments fa-5x"></i>
                    </div>
                    <div class="col-xs-6 text-right">
                        <p class="announcement-text">My queue</p>
                    </div>
                </div>
            </div>
        </div>

如何将整个面板作为超链接。就像我应该能够点击面板的任何部分,它应该导航到另一个页面。

在线示例显示将页脚作为超链接,但我认为如果我可以使整个面板成为超链接会更好。

我不想使用metro.js。

谢谢。


8418
2017-12-04 00:27


起源



答案:


只需将整个面板包裹在锚标签中即可。

 <a href="link.com">    
  <div class="panel panel-info">
    <div class="panel-heading">
      <div class="row">
        <div class="col-xs-6">
          <i class="fa fa-comments fa-5x"></i>
        </div>
        <div class="col-xs-6 text-right">
          <p class="announcement-text">My queue</p>
        </div>
      </div>
    </div>
  </div>
</a>

12
2018-05-06 01:48



这绝对是正确的解决方案。 @seniors,任何理由都不是这样的? - Andrew Allbright
我在面板周围做了它,它弄乱了布局。我在面板内的元素上尝试了它,它工作正常。 - Adrian
@Adrian我的第一个猜测是<a>标签默认是内联元素,这可能是它搞乱了布局的原因。如果你研究一下,应该是一个相当简单的CSS修复。我唯一关心的是没有将整个面板包裹在锚标签内部,因为面板的某些部分可能是不可点击的,即。如果不是每个元素都被包裹,请按照预期的链接。 - Alan Thomas
@AlanThomas我不记得我正在修改的具体项目,但改变标签的顺序为我解决了问题。我试图避免重写Bootstrap的CSS设置,因为我不想记住我对更深层次的事情做了什么。 - Adrian
这里 是 另一种工作方案,没有任何变化。希望有所帮助 - stom


答案:


只需将整个面板包裹在锚标签中即可。

 <a href="link.com">    
  <div class="panel panel-info">
    <div class="panel-heading">
      <div class="row">
        <div class="col-xs-6">
          <i class="fa fa-comments fa-5x"></i>
        </div>
        <div class="col-xs-6 text-right">
          <p class="announcement-text">My queue</p>
        </div>
      </div>
    </div>
  </div>
</a>

12
2018-05-06 01:48



这绝对是正确的解决方案。 @seniors,任何理由都不是这样的? - Andrew Allbright
我在面板周围做了它,它弄乱了布局。我在面板内的元素上尝试了它,它工作正常。 - Adrian
@Adrian我的第一个猜测是<a>标签默认是内联元素,这可能是它搞乱了布局的原因。如果你研究一下,应该是一个相当简单的CSS修复。我唯一关心的是没有将整个面板包裹在锚标签内部,因为面板的某些部分可能是不可点击的,即。如果不是每个元素都被包裹,请按照预期的链接。 - Alan Thomas
@AlanThomas我不记得我正在修改的具体项目,但改变标签的顺序为我解决了问题。我试图避免重写Bootstrap的CSS设置,因为我不想记住我对更深层次的事情做了什么。 - Adrian
这里 是 另一种工作方案,没有任何变化。希望有所帮助 - stom


由于样式表中的祖先选择器,在元素周围使用锚标记可能会弄乱一些布局。

使用锚标记作为面板本身也可能不会从默认面板样式继承。

使用javascript的最简单的解决方案是在面板div上放置一个属性,如href或data-href,然后是全局事件监听器(代表)。

 $(document).on('click', '.panel[data-href]:not(a)', function(){
     window.location = $(this).attr('data-href');
 });

1
2017-08-22 13:55





尝试

 $('.panel panel-info').click(function(e) {
        e.preventDefault();
        window.location = 'http://stackoverflow.com/';
    });

或者设置面板的ID

       <div class="panel panel-info" id="lnkPanel">


        $('#lnkPanel').click(function(e) {
            e.preventDefault();
            window.location = 'http://stackoverflow.com/';
        });

对于.NET MVC 3或4:

<script type="text/javascript">
      var lnkDashboard = '@Url.Action("Index", "Dashboard")';
</script>

  $('#lnkPanel').click(function(e) {
            e.preventDefault();
            window.location = lnkDashboard;
        });

DEMO :页面不允许导航,但您可以看到完整的示例


0
2017-12-04 00:32



你好,谢谢你的回复。而不是使用http://地址,我想使用> @ Html.ActionLink(“我的队列”,“索引”,“仪表板”,null,null)。无论如何我能做到这一点? - user1447718
@ user1447718嗨,我猜您使用的是.net mvc 3或4.在这种情况下,请尝试使用更新 - Mate
演示不工作。 - Max
@MaxGrass在jsfiddle上重新添加 - Mate