Answers:
您可以data-toggle="tab"
使用实时/委托事件将属性从标签中删除,因为它已被关联
class="disabled"
可以按预期工作了.nav.nav-tabs > li.disabled { pointer-events: none; a { color: silver; } }
从2.1开始,您可以从http://twitter.github.com/bootstrap/components.html#navs的引导程序文档中进行操作。
禁用状态
对于任何导航组件(标签,药丸或列表),请添加.disabled以显示灰色链接,并且没有悬停效果。但是,除非删除href属性,否则链接将保持可单击状态。或者,您可以实施自定义JavaScript来防止这些点击。
有关功能添加的讨论,请参见https://github.com/twitter/bootstrap/issues/2764。
我添加了以下Javascript以防止点击禁用的链接:
$(".nav-tabs a[data-toggle=tab]").on("click", function(e) {
if ($(this).hasClass("disabled")) {
e.preventDefault();
return false;
}
});
disabled
类添加到li
元素,然后添加指定的javascript,除了要检查的条件是:if ($(this).parent().hasClass('disabled')) {..}
。
li
改变用户视觉效果的是什么,因此应该改变disabled
类。
我认为最好的解决方案是禁用CSS。您定义一个新类,然后关闭其上的鼠标事件:
.disabledTab{
pointer-events: none;
}
然后将此类分配给所需的li元素:
<li class="disabled disabledTab"><a href="#"> .... </a></li>
您也可以使用jQuery添加/删除类。例如,要禁用所有选项卡:
$("ul.nav li").removeClass('active').addClass('disabledTab');
这是一个示例:jsFiddle
古老的问题,但这有点向我指出了正确的方向。我追求的方法是将禁用的类添加到li中,然后将以下代码添加到我的Javascript文件中。
$('.nav-tabs li.disabled > a[data-toggle=tab]').on('click', function(e) {
e.stopImmediatePropagation();
});
这将禁用li具有禁用类的任何链接。有点类似于totas的答案,但是如果用户每次单击任何选项卡链接并且不使用return false,它将不会运行。
希望它对某人有用!
对于我来说,最好的解决方案是将以下一些答案混合在一起:
disabled
类添加到我要禁用的li中添加这段JS:
`$(".nav .disabled>a").on("click", function(e) {
e.preventDefault();
return false;
});`
如果您希望Bootstrap完全不干扰您的代码,甚至可以删除data-toggle =“ tab”属性。
****注意**:**即使您删除了数据切换,这里的JS代码也很重要,因为否则,它会通过向#your-id
其中添加值来更新URL,不建议这样做,因为您的标签页已禁用,因此不应访问。
随着唯一的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>
这是一个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>
假设这是您的TAB,并且您要禁用它
<li class="" id="groups"><a data-toggle="tab" class="navuserli" href="#groups" aria-expanded="false">Groups</a></li>
因此,您还可以通过添加动态CSS来禁用此标签
$('#groups').css('pointer-events', 'none')
除了詹姆斯的答案:
如果您需要禁用链接,请使用
$('a[data-toggle="tab"]').addClass('disabled');
如果需要防止禁用的链接加载选项卡
$('a[data-toggle="tab"]').click(function(e){
if($this.hasClass("disabled")){
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
}
}
如果您需要无法链接
$('a[data-toggle="tab"]').removeClass('disabled');
我尝试了所有建议的答案,但最终我使它像这样工作
if (false) //your condition
{
$("a[data-toggle='tab'").prop('disabled', true);
$("a[data-toggle='tab'").each(function () {
$(this).prop('data-href', $(this).attr('href')); // hold you original href
$(this).attr('href', '#'); // clear href
});
$("a[data-toggle='tab'").addClass('disabled-link');
}
else
{
$("a[data-toggle='tab'").prop('disabled', false);
$("a[data-toggle='tab'").each(function () {
$(this).attr('href', $(this).prop('data-href')); // restore original href
});
$("a[data-toggle='tab'").removeClass('disabled-link');
}
// if you want to show extra messages that the tab is disabled for a reason
$("a[data-toggle='tab'").click(function(){
alert('Tab is disabled for a reason');
});
没有答案对我有用。data-toggle="tab"
从中删除a
阻止选项卡激活,但它还会添加#tabId
哈希到URL。这对我来说是不可接受的。使用javascript也是不可接受的。
起作用的方法是将disabled
类添加到中,li
并删除href
其中包含的属性a
。
我的标签位于面板中,因此我向标签锚添加了class ='disabled'
在JavaScript中我添加了:
$(selector + ' a[data-toggle="tab"]').on('show.bs.tab', function (e) {
if ($(this).hasClass('disabled')){
e.preventDefault();
return false;
}
})
为了减少展示,我添加了:
.panel-heading{
display:table;
width:100%;
padding-bottom:10px;
ul.nav-tabs{
display:table-cell;
vertical-align:bottom;
a.disabled{
.text-muted;
cursor:default;
&:hover{
background-color:transparent;
border:none;
}
}
}
}
避免这种情况的最简单,最干净的解决方案是添加 onclick="return false;"
到a
标签中。
<ul class="nav nav-tabs">
<li class="active">
<a href="#home" onclick="return false;">Home</a>
</li>
<li>
<a href="#ApprovalDetails" onclick="return false;">Approval Details</a>
</li>
</ul>
"cursor:no-drop;"
只会使光标看起来处于禁用状态,但可以单击,Url会附加href目标,例如page.apsx#Home
"disabled"
类添加到<li>
AND删除href
这是我的尝试。禁用标签:
码:
var toggleTabs = function(state) {
disabledTabs = ['#tab2', '#tab3'];
$.each(disabledTabs, $.proxy(function(idx, tabSelector) {
tab = $(tabSelector);
if (tab.length) {
if (state) {
// Enable tab click.
$(tab).toggleClass('disabled', false);
$('a', tab).attr('data-toggle', 'tab').off('click');
} else {
// Disable tab click.
$(tab).toggleClass('disabled', true);
$('a', tab).removeAttr('data-toggle').on('click', function(e){
e.preventDefault();
});
}
}
}, this));
};
toggleTabs.call(myTabContainer, true);