带有切换按钮和类以禁用切换的选项卡式内容
Tabbed content with toggle buttons and class to disable toggle
我正在尝试让这个脚本具有可切换的选项卡。从现在的仪式开始,所有内容都是隐藏的,然后当我点击选项卡按钮时,该选项卡内容就会出现。
我希望如果我再次单击同一选项卡,它会隐藏内容。
这是我到目前为止所拥有的:
$('div.tabs a').click(function(){
var tab_id = $(this).attr('data-tab');
$('div.tabs a').removeClass('current');
$('.tab-content').removeClass('current');
$(this).addClass('current');
$("#"+tab_id).addClass('current');
})
我试图让它工作,但它每次单击按钮都会删除"当前"类,因此它将始终保持隐藏状态。
$('div.tabs a').click(function(){
if ( $("div.tabs a").hasClass("current") ) {
$('div.tabs a').removeClass('current');
$('.tab-content').removeClass('current')};
else (
var tab_id = $(this).attr('data-tab');
$('div.tabs a').removeClass('current');
$('.tab-content').removeClass('current');
$(this).addClass('current');
$("#"+tab_id).addClass('current');
)
})
这是一个小提琴:http://jsfiddle.net/bL90n9o8/
//编辑
添加到"if"语句的末尾,看看我是否可以做到,当它有".close"类时,它会使选项卡无法关闭,但这不起作用。
我试图做的是让它查找两个类,然后才能单击选项卡将其关闭。如果它没有这两个类,它将不会关闭选项卡。希望我解释得足够好。
$('div.tabs a').click(function () {
if($(this).hasClass('current') && $(this).hasClass('close')){ // Added new code to the end
//if($(this).is('.current, .close')){ // Or maybe something like this? But this does not work.
$('div.tabs a').removeClass('current');
$('.content').removeClass('current');
}else{
var tabid = $(this).attr('data-content');
//var tabid = $(this).data('content'); //You can use this line instead of above line as well
$('div.tabs a').removeClass('current');
$('.content').removeClass('current');
$(this).addClass('current');
$("#" + tabid).addClass('current');
}
});
你也可以这样尝试。如前所述,您必须检查类current
如果单击的选项卡存在,然后将其删除,否则将类current
添加到其中。
.HTML
<div class="tabs">
<a class="tab-link" data-content="tab-1">tab1</a>
<a class="tab-link" data-content="tab-2">tab2</a>
<a class="tab-link" data-content="tab-3">tab3</a>
</div>
<div id="tab-1" class="content">1</div>
<div id="tab-2" class="content">2</div>
<div id="tab-3" class="content">3</div>
简讯
$('div.tabs a').click(function () {
if($(this).hasClass('current')){
$('div.tabs a').removeClass('current');
$('.content').removeClass('current');
}else{
var tabid = $(this).attr('data-content');
//var tabid = $(this).data('content'); //You can use this line instead of above line as well
$('div.tabs a').removeClass('current');
$('.content').removeClass('current');
$(this).addClass('current');
$("#" + tabid).addClass('current');
}
});
JS小提琴示例
更新
对于问题的下一部分,您可能需要执行以下操作:
$('div.tabs a').click(function () {
if($(this).hasClass('current')){
if($(this).hasClass('close')){
$('div.tabs a').removeClass('current');
}else{
$('div.tabs a').removeClass('current');
$('.content').not('.close').removeClass('current');
}
}else{
var tabid = $(this).attr('data-content');
//var tabid = $(this).data('content');
$('div.tabs a').removeClass('current');
$('.content').removeClass('current');
$(this).addClass('current');
$("#" + tabid).addClass('current');
}
});
更新的小提琴
您需要
检查与单击的链接相关的div是否已经具有current
类,如果是,请将其隐藏而不是显示:
$('div.tabs a').click(function (e) {
e.preventDefault();
var tabid = $(this).attr('href');
var hasClass = $(tabid).hasClass('current');
$('div.tabs a, .content').removeClass('current');
!hasClass && $(this).add(tabid).addClass('current');
})
更新的小提琴
另请注意,我删除了您的 tdata
属性,因为它无效,而是使用 href
来链接相关的div。
相关文章:
- 如何在不需要单击按钮的情况下获取选项的值
- 单击按钮即可在浏览器的新选项卡中打开 Sapui5 详细信息页面
- 复选框/单选按钮-添加所选项目的总价
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 更新:仅根据单选按钮和所选选项选择特定项目
- 如何在ASP.NET中单击按钮后激活启动选项卡
- 关于&从win8 RC转换为win8 RTM后,首选项弹出按钮为空
- 单击按钮进入下一个选项卡,而不是单击选项卡
- Angular:如何使用ngRepeat并设置默认单选按钮选项
- 如何更改单击按钮时的javascript滑块选项
- Ajax在使用onclick选项时无法处理HTML表单中的提交按钮
- 隐藏结账按钮,直到选择发货选项
- 如何将每个选项按钮与其自己的单个标记相关联
- IE9 问题:动态创建(通过 innerHTML)选项按钮和复选框不起作用
- 禁用javasscript中的选项/按钮
- “刷卡back"在离子项目后,点击离子选项按钮
- Bootstrap插件创建选项按钮与任意js
- 如何制作交互式选项按钮
- 使用javascript函数在url执行下拉选项/按钮
- 如何让浏览器“保存图像为”选项按钮