2012.05.24 jq Tab

又有两天没写博客了。 不过我并没有停止学习, 这几天依然在做jq tab,只是从家里做改成在公司做,本来也是做给公司用的,所以在公司做应该也无可厚非。

 

这3天都在公司做jq tab。但由于最近几天琐事比较多,所以进展不大。主要是发现了jq tab就目前来说的一个大的设计问题:

      之前显示tab都是通过在容器中添加ul元素,ul中的每个li对应一个tab,而通过定义开始和结束索引(下文简称index)来规定显示哪些tab。 但在实现设置功能时,需要实现让tab在“更多”容器和“已显示”容器间切换位置,发现无法找到需要切换位置的tab对应的数据内容(json格式的数据),因为现在在初始化时,传入的要显示成tab的json数组是由每个具有value和text属性的对象组成。现在的设计是:每个li我添加了value属性,innerHTML则显示text属性。   这样当我需要将一个tab从“更多”容器移动到“已显示”容器之后,为了能在下次点击更多按钮时,能正确的显示“更多”的tab,我需要记录已显示的tab的index,但就现在的设计来说,不太好实现,因为我并没有记录在more容器中的各个tab的index,在将tab在两个容器中多次切换后,就可能完全跟踪不到每个tab的index。

 

      我现在的解决方法是: 

  将每个li中的value属性改成一个索引属性,为了避免和json数据传入的某个属性重名,暂时命名为jqTabIndex。而这也让我的第四个需求:

  每个tab可以接受任意数据格式被提早实现。 而现在的进度是,这个需求已经实现,且显示和callback事件的相关修改也已经完成(其实这里只要极少的改动)。而对于上面提到的,在两个容器中切换tab时遇到的问题,现在我添加了几个索引数组,分别记录全部tab的索引,已显示的索引,未显示的索引(最后这个索引是出于性能的考量,避免每次要用到的时候都需要遍历前2个索引数组来计算该数组,算是一个冗余属性)。

 

       此外,之前也想到另外一个问题,就是我们系统中,宽度一般都是用百分比来设置,这样我担心tab控件显示的实际tab数量会因为浏览器窗口的尺寸被改变而改变,对于这个问题,现在还不马上解决,先处理了上述问题,再对该问题进行测试。但也大概想到了一个解决方法,就是在jqTabMaster类的config属性中,添加一个是否窗口尺寸被改动的属性,加入命名为isWindowSizeChanged,并给window注册onresize事件,当窗口发生尺寸变化的时候,将isWindowSizeChanged设置为true。 然后,在有可能受窗口尺寸影响的功能的开头,先判断这个属性,若为true,就重新获取一次显示信息(该信息的获取已封装在一个方法里)。  以此来解决这个问题。

 

 

                                                          今天就到这里,很累了。 2012.05.24

posted on   bee0060  阅读(271)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

导航

< 2012年5月 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
点击右上角即可分享
微信分享提示