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

原文地址:https://www.cnblogs.com/bee0060/p/2517301.html