选项卡更改仅用于单击的元素,而不是所有元素都具有相同的类
tab change for only clicked element, not all with the same class
嗨,我有一个简单的选项卡脚本:
$(".tabs").each(function() {
$(this).each(function() {
// FIRST IS ACTIVE
$(".tabs-nav").find("li").eq(0).addClass("tab-active");
$(".tabs-content").find("> div, > span, > p").eq(0).nextAll().hide();
// CHANGE ACTIVE TAB
$(".tabs-nav li").click(function(event) {
$(".tabs-nav li").removeClass("tab-active");
$(".tabs-content").children().fadeOut();
$(this).addClass("tab-active");
getCurrentTab = $(this).index();
$(".tabs-content > div, .tabs-content > span, .tabs-content > p").eq(getCurrentTab).fadeIn();
});
});
});
和HTML:
<div class="tabs">
<ul class="tabs-nav">
<li><a>Tab 1</a></li>
<li><a>Tab 2</a></li>
<li><a>Tab 3</a></li>
</ul>
<div class="tabs-content">
<div>Tab 1 Content</div>
<div>Tab 2 Content</div>
<div>Tab 3 Content</div>
</div>
</div>
<div class="tabs">
<ul class="tabs-nav">
<li><a>Tab 1</a></li>
<li><a>Tab 2</a></li>
<li><a>Tab 3</a></li>
</ul>
<div class="tabs-content">
<div>Tab 1 Content</div>
<div>Tab 2 Content</div>
<div>Tab 3 Content</div>
</div>
</div>
当我在第一个选项卡div中选择一个选项卡时,事件将在两个选项卡div上。如何在不添加id的情况下更改脚本以仅选择我单击的选项卡?非常感谢。
在您的点击处理程序中,您需要将操作范围限制为相关的.tabs
元素。
$(".tabs .tabs-nav li").click(function (event) {
var $this = $(this).addClass("tab-active"),
$tab = $this.closest('.tabs'),
$contents = $tab.find(".tabs-content > *");
$this.siblings().removeClass("tab-active");
var index = $this.index();
var $content = $contents.eq(index).stop(true, true).fadeIn();
$contents.not($content).stop(true, true).fadeOut();
}).filter(':first-child').click();
演示:Fiddle
$(".tabs").each(function() {
$(this).each(function() {
// FIRST IS ACTIVE
$(".tabs-nav").find("li").eq(0).addClass("tab-active");
$(".tabs-content").find("> div, > span, > p").eq(0).nextAll().hide();
});
});
// CHANGE ACTIVE TAB
$(".tabs-nav li").click(function(event) {
$(".tabs-nav li").removeClass("tab-active");
$(".tabs-content").children().fadeOut();
$(this).addClass("tab-active");
getCurrentTab = $(this).index();
$(".tabs-content > div, .tabs-content > span, .tabs-content > p").eq(getCurrentTab).fadeIn();
$(this).addClass("tab-active");
});
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- 在ajax成功后,cluetip不适用于首次点击活动元素
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- Rails/Javascript链接到用于切换多个元素的函数
- 是否有任何可能的原因使我应该指定类型=“”;按钮“;用于我的按钮元素
- 我们怎样才能将内含子J用于一组特定的元素
- querySelectorAll不适用于指定的元素
- 为什么样式属性不适用于使用DOMParser创建的元素
- 将数组元素附加到FormData dos'不适用于Firefox 15
- 用于各个元素的Ajax加载程序
- 使用jquery验证函数不适用于select元素
- 为什么Bootstrap typeahead不适用于具有相同ID的输入元素
- 用于呈现kbd标记元素的Javascript
- 单击不适用于新元素
- 事件不适用于通过Ajax推杆的元素
- 字符计数不适用于动态创建的元素
- 数组函数不适用于从元素文本创建的JavaScript数组
- javascript正则表达式,用于编辑元素内部的css样式属性
- 在函数中定位动态创建的HTML元素(用于追加事件 - 而不是点击!)jQuery
- 使用 JavaScript 定位浮动元素(用于动画)