TAB子页面切换中遇到的问题
来源:互联网 发布:动漫恶搞软件 编辑:程序博客网 时间:2024/06/10 20:15
一个页面有时需要显示多项内容,每项内容都是一个子页,切换项目的时候内容部分会切换。实现这个功能可以用iframe,现在没有用到iframe,通过js控制内容的显示与隐藏。
但这样存在问题,假设有三个子页,当第二个子页必须刷新时,页面重新加载得到的却是第一个子页的内容(因为三个子页是一个整体,而第一个子页为默认显示页面)。
这个时候可以通过在URL中添加一个参数标识将要显示第几个子页(例如tab=2显示第二个子页),然后在模板页处理时直接设置子页的css类,隐藏或者显示子页。
当使用URL参数时,可以在控制器类中根据参数值直接设置相应子页的css类参数。
例如当tab = 1时,设置tab_1_class = "hidden", tab_2_class = "selected", tab_3_class = "hidden",然后在子页相应位置输出这些参数,但这样做增加了控制器和视图的耦合。
还可以在模板中通过三个判断来设置相应子页的显示与否,
以ThinkPHP模板为例
<eq name="tab" value="1">class="selected"</eq>
<eq name="tab" value="2">class="selected"</eq>
<eq name="tab" value="3">class="selected"</eq>
但这样降低了效率,
寻找一个折衷的办法,在视图中这样操作
tab_1_class = "hidden";
tab_2_class = "hidden";
tab_3_class = "hidden";
if(tab == 1)
{
tab_1_class = "selected";
}else if ( tab == 2 )
{
tab_2_class = "selected";
}else
{
tab_3_class = "selected";
}
但这样似乎又破坏了视图的整洁性。
也可以在模板页面中写入子页的js参数,页面加载之后根据子页的js参数设置子页的显示与否,但这样做用户体验并不好,因为在页面加载之前和加载之后用户看到的是截然不同的内容。
同理,不再使用URL参数了,而使用URL锚点信息,在页面加载后用js获得锚点信息,然后根据锚点信息确定哪一个子页是当前需要显示的页面(location.lash可以获得锚点信息)。
编程生活中有很多折衷,怎么取舍,全凭项目及个人。
- TAB子页面切换中遇到的问题
- 制作tab中遇到的jq问题
- html页面中改变TAB键的切换顺序
- TabActivity中某一个tab内切换activity页面的方法
- 关于android的tab子页面刷新父页面的tab样式问题
- jquery easyui 在子tab页中打开新tab页(关于easyUI在子页面增加显示tabs的一个问题)
- jquery easyui 在子tab页中打开新tab页(关于easyUI在子页面增加显示tabs的一个问题)
- jquery easyui 在子tab页中打开新tab页(关于easyUI在子页面增加显示tabs的一个问题)
- easyui 在子tab页中打开新tab页(关于easyUI在子页面增加显示tabs的一个问题)
- 子Tab中按钮进入其他子tab页面
- VB.NET中Tab键切换Textbox的顺序问题
- android TabHost+Fragment实现页面切换时遇到的问题
- 简单好用的tab切换页面
- 最简单的tab页面切换+动画
- MyEclipse中页面切换慢的问题
- tab切换页面备份
- tab页面切换
- tab页面切换效果
- 鸡兔同笼
- Java中抽象类和接口的区别
- 百度优酷土豆小技巧
- 点线计算
- 驱动编程之定时器
- TAB子页面切换中遇到的问题
- SQLite快速入门二--表、视图的创建、修改、删除操作
- spring事务传播属性
- java数组总结
- java synchronized详解
- joj 2529 Chorus 动态规划 最长上升子序列和最长下降子序列
- 基础总结篇之三:Activity的task相关
- 例题3-9
- 字节流和字符流