视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
结构/表现/行为完全分离的选项卡(jquery版和原生JS版)_jquery
2020-11-27 20:54:37 责编:小采
文档
关于思路,和常规选项卡思路一样.点击选项菜单,突出显示,并显示对应的选项.本文实例中主要是通过判断点击菜单在菜单列表中的索引位置来显示或隐藏选项区.原生js还有很多种实现方法(蓝色理想中搜索),为了与jQ版思路保持一致,本文实例用的是循环判断. 详见注释.
另有几点说明:
1. 通过本文DEMO演示,可以很明显的看到原生JS的window.onload=function(){…}与jQuery的$(document).ready(function(){…});的区别,这也是我为什么不用样式定义初始状态下隐藏第二三个显示区的原因;
2. 本文只是选项卡一个原型实现,若要用于同一页面多个选项卡,变量已集中到函数头部,可自行封装成函数;
3. 请不要问如何实现更酷很炫的效果,请自已思考添加效果;
4. 不希望大家用这个效果时只是机械的复制粘贴,思考加实践,然后消化成自己的.
查看演示:

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
核心代码:
代码如下:
//jQ版本
$(function(){
var _tab=$('ul.tabnav>li');//获取选项卡导航
var _box=$('.tabbox div');//获取内容切换区
var _hover='hover';//当前点击显示的样式
var _index;//索引值
_tab.eq(0).addClass(_hover);//第一个导航高亮显示
_tab.click(function(){
_index=_tab.index(this);//获取当前点击的索引值
$(this).addClass(_hover).siblings().removeClass(_hover);//当前点击高亮显示
_box.eq(_index).show().siblings().hide();//通过索引值让对应的选项内容区显示
}).eq(0).click();
});

//原生JS版本
代码如下:
window.onload=function(){
var tabnav=document.getElementById('tabnav');
var list=tabnav.getElementsByTagName('li');
var tabbox=document.getElementById('tabbox');
var divs=tabbox.getElementsByTagName('div');
var hover='hover';//当前点击显示的样式
var indexValue=function(self,obj){//获取索引值的函数,通过它获取当前点击在导航中的索引位置
for(var i=0;iif(obj[i]==self) return i;
}
};
var index;
list[0].className=hover;//第一个默认高亮,建议在页面中直接定义
for(var k=1;kdivs[k].style.display='none';
}
for(var l=0;llist[l].onclick=function(){
index=indexValue(this,list);//利用前面定义的indexValue函数取当前点击在选项导航中的索引值,
for(var m=0;mlist[m].className= (m==index) ? hover : '';//高亮显示点击项并移除其他项高亮
}
for(var n=0;ndivs[n].style.display= (n==index) ? 'block' : 'none';//显示点击对应的选项区,隐藏其他
}
}
}
}

下载本文
显示全文
专题