//需要引用jQuery包
$("#t1 a").click(function(){ //获取id为t1的div下面的所有a标签
var id = $(this).attr("id").substr(5)//截取当前点击的对象的id属性的第6位及之后的字符
$("#t1 a").attr("class","")//使所有的a标签的class样式都为空
$(this).attr("class","sel")//使被点击的a标签更换class样式为sel
$(".we").hide()//所有的class名为we的都隐藏
$("#w"+id).show()//让其中的一个class名为we并且id为w+id的div显示
})
我们使用移动端时可以通过触屏手势左右滑动来切换TAB栏目,我们说的TAB一般由导航条和TAB对应的内容组成,切换导航条上的标签同时标签对应的内容也会跟着切换。我们准备一个TAB导航#pagenavi,里面包含TAB导航要切换的四个导航按钮,然后是切换的主体内容#slider,这里应该放置四个li与导航按钮对应,内容自定义。
由于是移动端应用,我们加载zepto.js,zepto就是体积小的jquery。然后需要加载触屏滑动插件touchslider.js。
接下来我们就直接调用TouchSlider,通过设置绑定tab,滑动方向、速度、时间等信息实现内容切换,请看详细代码:
<script type="text/javascript">
var page='pagenavi'
var mslide='slider'
var mtitle='emtitle'
arrdiv = 'arrdiv'
var as=document.getElementById(page).getElementsByTagName('a')
var tt=new TouchSlider({id:mslide,'auto':'-1',fx:'ease-out',direction:'left',speed:600,timeout:5000,'before':function(index){
var as=document.getElementById(this.page).getElementsByTagName('a')
as[this.p].className=''
as[index].className='active'
this.p=index
var txt=as[index].innerText
$("#"+this.page).parent().find('.emtitle').text(txt)
var txturl=as[index].getAttribute('href')
var turl=txturl.split('#')
$("#"+this.page).parent().find('.go_btn').attr('href',turl[1])
}})
tt.page = page
tt.p = 0
for(var i=0i<as.lengthi++){
(function(){
var j=i
as[j].tt = tt
as[j].onclick=function(){
this.tt.slide(j)
return false
}
})()
}
</script>
在一个页面中有多个Tab的问题可以这样来处理:参照
工程项目管理/单位工程项目完工管理/申请列表
比如在此页面中有三个Tab切换:
那么要拆成四个页面一个Mange+三个Tab的页面
1、Manage页面:在Tabs中的TabsContent里面要有三个<div></div>这一定要有不能删掉。
<div class="page">
<div class="pageContent">
<div class="tabs" currentindex="2" eventtype="click">
<div class="tabsHeader">
<div class="tabsHeaderContent">
<ul>
<li><a href="a.aspx" class="j-ajax"
><span>名称1</span></a></li>
<li><a href="b.aspx" class="j-ajax"
><span>名称2</span></a></li>
<li><a href="c.aspx" class="j-ajax"
><span>名称3</span></a></li>
</ul>
</div>
</div>
<div class="tabsContent" >
<div id="tab1"></div>
<div id="tab2"></div>
<div id="tab3"></div>
</div>
</div>
</div>
</div>
2、其他的三个页面的格式为:
<div class="panelBar">
<form id="pagerForm"
action="ProjectManage/FinishedProject/FinishedProjectManageAuditFinished.aspx"
method="post">
<input type="hidden" name="status" value="active"/>
<input type="hidden" name="pageNum" />
<input type="hidden" name="numPerPage" value="<%=numPerPage.Value%>" />
</form>
<ul class="toolBar">
<li><a class="delete"
href="ProjectManage/FinishedProject/FinishedProjectManageAuditFinished.aspx?fuid={sid_fin}"
target="navTabTodo"
title="确定要反审核吗?"><span>反审核</span></a></li> </ul>
</div>
<table class="table" layouth="138">
</table>
<div class="panelBar">
<div class="pages">
<span>显示</span>
<select id="numPerPage" runat="server"
onchange="tabPageBreak(gpage.jObj('tab2'),{numPerPage:this.value})">
<option value="3" selected="selected">3</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
</select>
<span>条,共<%=total %>条</span>
</div>
<div class="pagination" targettype="navTab" totalcount="<%=total
%>" numperpage="<%=numPerPage.Value %>" currentpage="<%=pageNum %>" tab="tab2">
</div>
</div>
3、在其他的三个页面中一开始就应该写<div class="panelBar"></div
class="panelBar">,前面的样式不需要,因为我们加载的时候前面的样式已经加载了所以只需要从panelBar开始加载即可。
比如上面显示处理分页的pagerForm也可以放到pagelBar里面。不能放到外面,不会加载的。
4、对于分页因为涉及到多个Tab的同时分页的问题,但是一个页面只有一个pagerForm考虑到假如修改为多个pagerForm的话,问题更加繁琐,
所以现在我们拆开来处理。里面的分页稍作了修改,以前我们用navTabPageBreak();现在我们用tabPageBreak并将当前tab2加了前缀的的值传到脚本中。