你可以在Bootstrap中禁用选项卡吗?

arb*_*bme 131 javascript css twitter-bootstrap twitter-bootstrap-2

您是否可以禁用Bootstrap 2.0中的选项卡,就像您可以禁用按钮一样?

Bet*_*tty 182

您可以data-toggle="tab"使用实时/委托事件将该属性从选项卡中删除

  • 游标:不允许; 在这种情况下更合适.除非你实际上是拖放. (23认同)
  • 谢谢你的工作,还添加了css"cursor:no-drop;" 对于游标,所以使用知道为什么他们不能点击它 (11认同)
  • 或者向li添加禁用的类 (8认同)
  • 您需要同时使用上述两项建议:将"已禁用"类添加到<li>并从标签中删除data-toogle或href属性 (6认同)
  • 我只是添加了这个CSS,现在`class ="disabled"`按预期工作`.nav.nav-tabs> li.disabled {pointer-events:none; 一个{颜色:银; } (6认同)
  • + 向 `li` 添加一个 `disabled` css-class (2认同)

Sco*_*ord 48

从2.1开始,您可以从http://twitter.github.com/bootstrap/components.html#navs的 bootstrap文档中获取.

禁用状态

对于任何导航组件(选项卡,药片或列表),为灰色链接添加.disabled,不添加悬停效果.但是,除非删除href属性,否则链接将保持可点击状态.或者,您可以实现自定义JavaScript以防止这些点击.

有关功能添加的讨论,请参阅https://github.com/twitter/bootstrap/issues/2764.

  • 是的但链接仍然可以点击. (8认同)
  • 确切地说,到目前为止可行的解决方案是删除data-toggle属性. (3认同)

tot*_*tas 34

我添加了以下Javascript以防止对已禁用链接的点击:

$(".nav-tabs a[data-toggle=tab]").on("click", function(e) {
  if ($(this).hasClass("disabled")) {
    e.preventDefault();
    return false;
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 我认为结合这个和@ hotzu的回答应该是答案.你应该将`disabled`类添加到`li`元素然后添加你指定的javascript,除了你要检查的条件是:`if($(this).parent().hasClass('disabled' )){..}`. (9认同)

Zso*_*aly 21

我认为最好的解决方案是使用css禁用.您定义了一个新类,并关闭它上面的鼠标事件:

.disabledTab{
    pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)

然后将此类分配给所需的li元素:

<li class="disabled disabledTab"><a href="#"> .... </a></li>
Run Code Online (Sandbox Code Playgroud)

您也可以使用jQuery添加/删除该类.例如,要禁用所有选项卡:

$("ul.nav li").removeClass('active').addClass('disabledTab');
Run Code Online (Sandbox Code Playgroud)

这是一个例子:jsFiddle


Rub*_*ain 13

不需要任何Jquery,只需一行CSS

.nav-tabs li.disabled a {
    pointer-events: none;
}
Run Code Online (Sandbox Code Playgroud)


小智 9

另外,我正在使用以下解决方案:

$('a[data-toggle="tab"]').on('click', function(){
  if ($(this).parent('li').hasClass('disabled')) {
    return false;
  };
});
Run Code Online (Sandbox Code Playgroud)

现在,您只需将"禁用"类添加到父级li,选项卡不起作用并变为灰色.


Jam*_*mes 6

老问题,但它有点指向我正确的方向.我去的方法是将禁用的类添加到li中,然后将以下代码添加到我的Javascript文件中.

$('.nav-tabs li.disabled > a[data-toggle=tab]').on('click', function(e) {
    e.stopImmediatePropagation();
});
Run Code Online (Sandbox Code Playgroud)

这将禁用li具有禁用类的任何链接.有点类似于totas的答案,但如果每次用户点击任何标签链接并且它不使用return false,它将不会运行.

希望它对某人有用!


Cyr*_* N. 6

对我来说,最好的解决方案是这里的一些答案的混合,它们是:

  • disabled类添加到我要禁用的li
  • 添加这段JS:

       `$(".nav .disabled>a").on("click", function(e) {
            e.preventDefault();
            return false;
        });`
    
    Run Code Online (Sandbox Code Playgroud)
  • 如果您希望Bootstrap不干扰您的代码,您甚至可以删除data-toggle ="tab"属性.

****注意**:**这里的JS代码很重要,即使你删除了数据切换,否则它会通过添加#your-id值来更新你的URL,因为你的选项卡被禁用,所以不建议这样做,因此不应该被访问.


Geo*_*lou 5

随着唯一的CSS,你可以定义两个CSS类。

<style type="text/css">
    /* Over the pointer-events:none, set the cursor to not-allowed.
    On this way you will have a more user friendly cursor. */
    .disabledTab {
        cursor: not-allowed;
    }
    /* Clicks are not permitted and change the opacity. */
    li.disabledTab > a[data-toggle="tab"] {
        pointer-events: none;
        filter: alpha(opacity=65);
        -webkit-box-shadow: none;
        box-shadow: none;
        opacity: .65;
    }
</style>
Run Code Online (Sandbox Code Playgroud)

这是一个 html 模板。唯一需要的是将类设置为您首选的列表项。

<ul class="nav nav-tabs tab-header">
    <li>
        <a href="#tab-info" data-toggle="tab">Info</a>
    </li>
    <li class="disabledTab">
        <a href="#tab-date" data-toggle="tab">Date</a>
    </li>
    <li>
        <a href="#tab-photo" data-toggle="tab">Photo</a>
    </li>
</ul>
<div class="tab-content">
    <div class="tab-pane active" id="tab-info">Info</div>
    <div class="tab-pane active" id="tab-date">Date</div>
    <div class="tab-pane active" id="tab-photo">Photo</div>
</div>
Run Code Online (Sandbox Code Playgroud)