下一个和上一个按钮功能不起作用
问题描述:
我已经使用下一个和上一个按钮功能创建了选项卡内容。但是下一个和上一个按钮功能不起作用。我已经使用jquery.min.js版本1.11.1版本。我已经创建了如下的代码片段。我已经提到this question并创建了答案中提到的功能。但仍然不起作用。下一个和上一个按钮功能不起作用
$("ul.kyc-tab-list li a").click(function() {
$("ul.kyc-tab-list li a").removeClass("active");
$(this).addClass("active");
});
$(".tab-btn1").click(function() {
$("#tab1").show();
$("#tab2").hide();
$("#tab3").hide();
$("#tab4").hide();
$("#tab5").hide();
});
$(".tab-btn2").click(function() {
$("#tab1").hide();
$("#tab2").show();
$("#tab3").hide();
$("#tab4").hide();
$("#tab5").hide();
});
$(".tab-btn3").click(function() {
$("#tab1").hide();
$("#tab2").hide();
$("#tab3").show();
$("#tab4").hide();
$("#tab5").hide();
});
$(".tab-btn4").click(function() {
$("#tab1").hide();
$("#tab2").hide();
$("#tab3").hide();
$("#tab4").show();
$("#tab5").hide();
});
$(".tab-btn5").click(function() {
$("#tab1").hide();
$("#tab2").hide();
$("#tab3").hide();
$("#tab4").hide();
$("#tab5").show();
});
$('#btnNext').click(function() {
// get current tab
var currentTab = $(".tab.active");
// get the next tab, if there is one
var newTab = currentTab.next();
// at the end, so go to the first one
if (newTab.length === 0) {
newTab = $(".tab").first();
}
currentTab.removeClass('active');
// add active to new tab
newTab.addClass('active');
});
$('#btnPrevious').click(function() {
// get current tab
var currentTab = $(".tab.active");
// get the previous tab, if there is one
var newTab = currentTab.prev();
// at the start, so go to the last one
if (newTab.length === 0) {
newTab = $(".tab").last();
}
currentTab.removeClass('active');
// add active to new tab
newTab.addClass('active');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
<section>
<div class="kyc-tab-wrapper">
<ul class="kyc-tab-list">
<li>
<a href="javascript:void(0);" class="tab active tab-btn1"><span>01</span>Customer</a>
</li>
<li>
<a href="javascript:void(0);" class="tab tab-btn2"><span>02</span>Contact/Promotors</a>
</li>
<li>
<a href="javascript:void(0);" class="tab tab-btn3"><span>03</span>Bank/Business</a>
</li>
<li>
<a href="javascript:void(0);" class="tab tab-btn4"><span>04</span>Other</a>
</li>
<li>
<a href="javascript:void(0);" class="tab tab-btn5"><span>05</span>Finish</a>
</li>
</ul>
<div class="kyc-tab-content" id="tab1">
tab 1
</div>
<div class="kyc-tab-content" id="tab2">
tab 2
</div>
</div>
<div class="kyc-tab-content" id="tab3">
tab 3
</div>
<div class="kyc-tab-content" id="tab4">
tab 4
</div>
<div class="kyc-tab-content" id="tab5">
tab 5</div>
<div class="kyc-tab-form-btn-wrap">
<button id="btnPrevious" style="display:none"> Previous</button>
<button id="btnNext">Next </button>
</div>
</div>
</div>
</section>
</div>
答
因此,这些都是我对你的代码进行更改:
所有的一是
kyc-tab-wrapper
结束标记后tab2
关闭- 固定的。-
而是有多个监听器来切换标签页,则可以在第一监听器本身有这样的:
$(".kyc-tab-content").hide(); $($(this).attr('class').split(' ').find(function(e) { return e.startsWith('tab-btn'); }).replace('tab-btn', '#tab')).show();
-
的下一个和以前按钮不起作用,你正在做的
prev
和next
上a
- 你应该用li
为li
从事的运动是兄弟姐妹:currentTab.closest('li').prev().find('a'); currentTab.closest('li').next().find('a');
您可以只需触发器单击该选项卡而不是再次进行登录。
还增加了一个初始触发显示第一个选项卡使用
$(".tab.active").trigger('click')
观看演示以下时,页面加载:
$("ul.kyc-tab-list li a").click(function() {
$("ul.kyc-tab-list li a").removeClass("active");
$(this).addClass("active");
/* Do this instead of multiple listeners */
$(".kyc-tab-content").hide();
$($(this).attr('class').split(' ').find(function(e) {
return e.startsWith('tab-btn');
}).replace('tab-btn', '#tab')).show();
});
// active tab load initially
$(".tab.active").trigger('click');
$('#btnNext').click(function() {
var currentTab = $(".tab.active");
var newTab = currentTab.closest('li').next().find('a');
if (newTab.length === 0) {
newTab = $(".tab").first();
}
newTab.trigger('click');
});
$('#btnPrevious').click(function() {
var currentTab = $(".tab.active");
var newTab = currentTab.closest('li').prev().find('a');
if (newTab.length === 0) {
newTab = $(".tab").last();
}
newTab.trigger('click');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
<section>
<div class="kyc-tab-wrapper">
<ul class="kyc-tab-list">
<li>
<a href="javascript:void(0);" class="tab active tab-btn1"><span>01</span>Customer</a>
</li>
<li>
<a href="javascript:void(0);" class="tab tab-btn2"><span>02</span>Contact/Promotors</a>
</li>
<li>
<a href="javascript:void(0);" class="tab tab-btn3"><span>03</span>Bank/Business</a>
</li>
<li>
<a href="javascript:void(0);" class="tab tab-btn4"><span>04</span>Other</a>
</li>
<li>
<a href="javascript:void(0);" class="tab tab-btn5"><span>05</span>Finish</a>
</li>
</ul>
<div class="kyc-tab-content" id="tab1">tab 1</div>
<div class="kyc-tab-content" id="tab2">tab 2</div>
<div class="kyc-tab-content" id="tab3">tab 3</div>
<div class="kyc-tab-content" id="tab4">tab 4</div>
<div class="kyc-tab-content" id="tab5">tab 5</div>
<div class="kyc-tab-form-btn-wrap">
<button id="btnPrevious"> Previous</button>
<button id="btnNext">Next </button>
</div>
</div>
</section>
</div>
答
对于Next
按钮工作更改以下线条状的下方。
// get current tab
var currentTab = $(".tab.active").closest("li");
//get the next tab, if there is one
var newTab = currentTab.next().find("a.tab");
//...
currentTab.find(".tab").removeClass('active');
对Prev
按钮也做类似的更改。
// get current tab
var currentTab = $(".tab.active").closest("li");
// get the previous tab, if there is one
var newTab = currentTab.prev().find("a.tab");
//...
currentTab.find(".tab").removeClass('active');
在你的代码的问题是你没有正确对焦下一首或上a
标签。
您可以创建一个的jsfiddle为了这? – adiga