08.24
仿iGoogle的拖动及排序效果
可以参见:http://net.tutsplus.com/tutorials/javascript-ajax/inettuts/
有詳細的说明,并有Demo可以在线预览,同时还提供了下载。
在使用的过程中,我遇到一些问题,花了好长时间才解决,在此记下来。
1. js版本问题
下载Demo后,发现它用到的jQuery版本是jquery-1.2.6.min.js。但我们项目中用到的jQuery大都使用了更高的版本,比如1.3.2或是,1.4.2。
如果替换掉Demo中的jQuery,会发现拖动和排序效果失效,但其它效果(编辑,删除)还起作用。上网查了一番,终于找到一解决办法: 在 inettuts.js 中找到 var notSortable = ”; 改成 var notSortable = null; 就可以了。
2. 和jScrollPane的css冲突问题
jScrollPane 是基于jQuery的滚动条效果,可以通过svn更新到本地,(svn 地址: http://jscrollpane.googlecode.com/svn/trunk/ ) 里面包含有Demo可供做测试。
情景再现:我有左右两个列表,左侧使用了jScrollPane。当把左侧的项目拖动到右侧时,要拖动的项总是被遮住;而从右侧拖回左侧则正常。我起初以为是z-index的设置有问题,修改z-index后,问题依然存在。然后,我用jQueryUI中的一些函数设置z-index也没起作用。但是去掉左侧列表的jScrollPane效果后,一切正常。
后来发现是css的原因,我们只需要修改 jScrollPane.css 中 .jScrollPaneContainer, 把其中的 overflow: hidden; 改成 overflow: visible; 如果其它页面中也用到了同样的css,为不影响其它页面,可以仅在当前页修改css.
3. thickbox和这两个js都冲突
情景再现:我在A页面中用js做了拖动,排序及滚动条效果,也就是用到了上面提到的两个js。在B页面使用thickbox弹出A页面。
问题:拖动效果失效,滚动条效果在不同浏览器下表现不一致。
解决办法:彻底放弃thickbox,改用fancybox。
关于 fancybox
官方网站:http://fancybox.net/
下载地址:http://fancybox.googlecode.com/files/jquery.fancybox-1.3.1.zip
使用方法:http://fancybox.net/howto