嘿,既然你说你正在使用 jQuery,让我们充分利用它......
看看这个小提琴
我把你的小提琴弄了很多。使用 jQuery 删除了不必要的功能等。我没有对你的 css 胡思乱想,但是我确实从你的 html 中删除了 body 标签,因为 jsfiddle 已经为你提供了一个 body 标签。
要在页面加载时运行您的 init,我必须指定您的 javascript 块就像在您的 body 标记(jsfiddle 的设置)中一样执行,并包含以下几乎等同于 body.onload 的代码行:
$(window).load(init);
以下是用重 jQuery 重写的函数:
function init() {
// Grab the tab links and content divs from the page
var tabListItems = $('#tabs li');
// loop through all tab li tags
$('#tabs li').each(function(i, ele){
// Assign click/focus events to the tab anchor/links
var tabLink = $(this).find('a').on('click', showTab).on('focus', function () { $(this).blur(); });
var tabBody = $($(tabLink).attr('href'));
// highlight the first tab
if (i == 0) $(tabLink).addClass('selected');
// hide all the content divs but the first
if (i != 0) $(tabBody).hide();
});
//auto-rotate every 4 seconds
setInterval(function () {
var selectedTab = $('#tabs').find('li.on');
var index = $(selectedTab).index();
if (index < $('#tabs').find('li').length - 1)
index++;
else
index = 0;
$('#tabs').find('li:eq('+index+') a').click();
}, 4000);
}
function showTab(e) {
// prevent default anchor/link action
e.preventDefault();
var selectedId = $(this).attr('href');
// remove 'on' class from all tab li tags
$('#tabs').find('li').removeClass('on');
// remove 'selected' class from all tab anchors/links
$('#tabs').find('a.selected').removeClass('selected');
// add 'on' class to selected tab li tag
$(this).closest('li').addClass('on');
// add selected class
$(this).addClass('selected');
// hide all tab bodies
$('div.tabContent').hide();
// show selected tab body
$(selectedId).show();
}
我想我已经很好地评论了代码的其余部分以了解发生了什么,但是如果您对它的工作方式有任何疑问或疑虑,请告诉我。
希望能帮助到你!