jquery - 如何在一页上使用多个Tabbar
问题描述
嗨,有这个 Tabber 的代码,但是当我在页面上使用一个标签栏但对于页面上的多个标签不能正常工作时,它工作正常。请记住,当 Tabbar 在页面上多次使用时,它是动态创建的,因此每次我的 html 都会具有相同的结构。例如,如果无序列表有 4 个 ID 为 1、2、3 和 4 的子级,则另一个 Tabbar 将具有相同的 ID。
请帮助解决这个问题。
我的代码如下: -
我认为,我无法将逻辑放在 jquery 上。
<ul class="tabs">
<li class="tab-link current" data-tab="tab-1">Tab One</li>
<li class="tab-link" data-tab="tab-2">Tab Two</li>
<li class="tab-link" data-tab="tab-3">Tab Three</li>
</ul>
<div id="tab-1" class="tab-content current">Lorem ipsum dolor sit amet</div>
<div id="tab-2" class="tab-content">
Duis aute irure dolor in
</div>
<div id="tab-3" class="tab-content">
Ut enim ad minim veniam,
</div>
脚本从这里开始----
$('ul.tabs li').click(function(){
var tab_id = $(this).attr('data-tab');
$('ul.tabs li').removeClass('current');
$('.tab-content').removeClass('current');
$(this).addClass('current');
$("#"+tab_id).addClass('current');
})
解决方案
问题是您通过它的 id 选择元素(该值在 html 页面中必须是唯一的),但您的目标是将此代码相乘,因此必须对其进行更改,以便您通过它的类来选择元素。这段代码应该适合你:
$('.parent[id^="tabbar"] ul.tabs li').click(function() {
let tab_id = $(this).attr('data-tab');
let id = $(this).closest('.parent').attr('id');
$('#' + id +' ul.tabs li').removeClass('current');
$('#' + id +' .tab-content').removeClass('current');
$(this).addClass('current');
$('#' + id +' .' + tab_id).addClass('current');
})
.tab-content {
display: none;
}
div .current {
display: block;
}
ul .current {
display: list-item;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>FIRST TABBAR</p>
<div class="parent" id="tabbar1">
<ul class="tabs">
<li class="tab-link current" data-tab="tab-1">Tab One</li>
<li class="tab-link" data-tab="tab-2">Tab Two</li>
<li class="tab-link" data-tab="tab-3">Tab Three</li>
</ul>
<div class="parent">
<div class="tab-content tab-1 current">Lorem ipsum dolor sit amet</div>
<div class="tab-content tab-2">Duis aute irure dolor in</div>
<div class="tab-content tab-3">Ut enim ad minim veniam,</div>
</div>
</div>
<p>SECOND TABBAR</p>
<div class="parent" id="tabbar2">
<ul class="tabs">
<li class="tab-link current" data-tab="tab-1">Tab One</li>
<li class="tab-link" data-tab="tab-2">Tab Two</li>
<li class="tab-link" data-tab="tab-3">Tab Three</li>
</ul>
<div class="parent">
<div class="tab-content tab-1 current">Lorem ipsum dolor sit amet</div>
<div class="tab-content tab-2">Duis aute irure dolor in</div>
<div class="tab-content tab-3">Ut enim ad minim veniam,</div>
</div>
</div>
推荐阅读
- oracle - 试图将记录数返回到我插入的控制台?
- facebook - 是否可以通过编程方式在 Facebook 打开/关闭组上发送消息?
- elixir - 测试前运行终端命令 - Elixir
- android - Android中的自定义RatingBar不会改变图标的颜色
- pandas - 使用 apply 方法将 Python Pandas 数据框列中的元组列表转换为列表字典
- javascript - 将 data-id 传输到多个模式
- java - 在选择时突出显示细线交叉图案中的相关单元格
- elasticsearch - 如何配置 ElasticSearch 以增加单字字符串之间的模糊性
- java - Spring Boot Starters 中如何指定 maven 版本?
- c# - 触摸屏显示器windows窗体应用程序c#