折叠 Bootstrap 个标签页 - 无法切换 .active 标签页 class
Collapse Bootstrap tabs - can't toggle .active tab class
我使用(样式化)Bootstrap 标签
我想在再次单击时关闭 Bootstrap 选项卡。
部分有效,我可以关闭相应的面板,但是当我想切换选项卡的 'active' class 时,脚本不起作用。
我的 JS 代码:
$('[data-toggle=tab]').click(function(e){
if($(this).parent().hasClass('active')){
e.preventDefault();
// toggle 'active' tab class (styling)
$(this).parent().toggleClass('active');
// toggle 'active' panel class (hide it)
$($(this).attr("href")).toggleClass('active');
}
})
所有代码(html、css、js)在此处可见:https://jsfiddle.net/j9stkqf6/1/
如果您发表评论:
$(this).parent().toggleClass('active');
面板已隐藏
我也试过step/step调试模式
一切正常,直到 JS 函数结束,全部重新出现(tab.active class 和面板)
你能帮我关闭面板并在再次单击选项卡时切换选项卡 'active' class。
谢谢!
这是对您有所帮助的附件 Demo
方法一
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-info">
<div class="panel-heading " role="tab" id="headingOne">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#per" aria-expanded="true" aria-controls="collapseOne">
<span class="glyphicon glyphicon-option-vertical"></span> <strong>Link 1</strong>
</a>
</h4>
</div>
<!--To make by defualt open a any panel put class "in" (without quotes)-->
<div id="per" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
Link 1 Link 1 Link 1 Link 1 Link 1 Link 1
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" role="tab" id="headingTwo">
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#family" aria-expanded="false" aria-controls="collapseTwo">
<span class="glyphicon glyphicon-option-vertical"></span> <strong>Link 2</strong>
</a>
</h4>
</div>
<div id="family" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
<div class="panel-body">
Link 2 Link 2 Link 2 Link 2 Link 2 Link 2
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" role="tab" id="headingThree">
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#social" aria-expanded="false" aria-controls="collapseThree">
<span class="glyphicon glyphicon-option-vertical"></span> <strong>Link 3</strong>
</a>
</h4>
</div>
<div id="social" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
<div class="panel-body">
Link 3 Link 3 Link 3 Link 3 Link 3 Link 3 Link 3
</div>
</div>
</div>
</div>
方法二
要一起折叠你也可以使用类似的东西,你可以折叠所有有 class "in" 的导航,因为打开的折叠有 class "in" 添加.您可以使用如下脚本关闭它们来捕获它们。
$('#accordion .collapse').on('show.bs.collapse', function (e) {
$('#accordion .in').collapse('hide');
});
我终于成功了:
除了 'e.preventDefault()'
之外,我还必须将 'e.stopPropagation()' 添加到我的 Javascript
'e.preventDefault()' 停止 Bootstrap 对该事件的操作(点击 A link)
'e.stopPropagation()' 避免来自 Bootstrap 的其他操作(点击 LI)
比照。 e.preventDefault() vs e.stopPropagation()
$('[data-toggle=tab]').click(function(e){
if($(this).parent().hasClass('active')){
e.preventDefault();
e.stopPropagation();
$(this).parent().removeClass('active');
$($(this).attr("href")).removeClass('active');
$($(this).attr("href")).removeClass('in');
$(this).attr("aria-expanded", false);
}
})
你可以在这里看到我的工作示例:https://jsfiddle.net/j9stkqf6/10/
我使用(样式化)Bootstrap 标签
我想在再次单击时关闭 Bootstrap 选项卡。
部分有效,我可以关闭相应的面板,但是当我想切换选项卡的 'active' class 时,脚本不起作用。
我的 JS 代码:
$('[data-toggle=tab]').click(function(e){
if($(this).parent().hasClass('active')){
e.preventDefault();
// toggle 'active' tab class (styling)
$(this).parent().toggleClass('active');
// toggle 'active' panel class (hide it)
$($(this).attr("href")).toggleClass('active');
}
})
所有代码(html、css、js)在此处可见:https://jsfiddle.net/j9stkqf6/1/
如果您发表评论:
$(this).parent().toggleClass('active');
面板已隐藏
我也试过step/step调试模式 一切正常,直到 JS 函数结束,全部重新出现(tab.active class 和面板)
你能帮我关闭面板并在再次单击选项卡时切换选项卡 'active' class。
谢谢!
这是对您有所帮助的附件 Demo
方法一
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-info">
<div class="panel-heading " role="tab" id="headingOne">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#per" aria-expanded="true" aria-controls="collapseOne">
<span class="glyphicon glyphicon-option-vertical"></span> <strong>Link 1</strong>
</a>
</h4>
</div>
<!--To make by defualt open a any panel put class "in" (without quotes)-->
<div id="per" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
Link 1 Link 1 Link 1 Link 1 Link 1 Link 1
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" role="tab" id="headingTwo">
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#family" aria-expanded="false" aria-controls="collapseTwo">
<span class="glyphicon glyphicon-option-vertical"></span> <strong>Link 2</strong>
</a>
</h4>
</div>
<div id="family" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
<div class="panel-body">
Link 2 Link 2 Link 2 Link 2 Link 2 Link 2
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" role="tab" id="headingThree">
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#social" aria-expanded="false" aria-controls="collapseThree">
<span class="glyphicon glyphicon-option-vertical"></span> <strong>Link 3</strong>
</a>
</h4>
</div>
<div id="social" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
<div class="panel-body">
Link 3 Link 3 Link 3 Link 3 Link 3 Link 3 Link 3
</div>
</div>
</div>
</div>
方法二
要一起折叠你也可以使用类似的东西,你可以折叠所有有 class "in" 的导航,因为打开的折叠有 class "in" 添加.您可以使用如下脚本关闭它们来捕获它们。
$('#accordion .collapse').on('show.bs.collapse', function (e) {
$('#accordion .in').collapse('hide');
});
我终于成功了:
除了 'e.preventDefault()'
之外,我还必须将 'e.stopPropagation()' 添加到我的 Javascript'e.preventDefault()' 停止 Bootstrap 对该事件的操作(点击 A link)
'e.stopPropagation()' 避免来自 Bootstrap 的其他操作(点击 LI)
比照。 e.preventDefault() vs e.stopPropagation()
$('[data-toggle=tab]').click(function(e){
if($(this).parent().hasClass('active')){
e.preventDefault();
e.stopPropagation();
$(this).parent().removeClass('active');
$($(this).attr("href")).removeClass('active');
$($(this).attr("href")).removeClass('in');
$(this).attr("aria-expanded", false);
}
})
你可以在这里看到我的工作示例:https://jsfiddle.net/j9stkqf6/10/