jquery中的sortable排序之后的保存状态的解决方法


Posted in Javascript onJanuary 28, 2010

当时也就从jquery的官方网站上抄了几句搞上去,后来发现用处不大,还挺慢。汗~~~以至于到今天早上也没搞清楚怎么样才能把排序后的结果保存起来,正好现在公司要做一个这样的功能,就又从新学习了下。
首先,在jquery的官方demo(http://jqueryui.com/demos/)上找到了相似的代码。我所要的叫就是portlets(http://jqueryui.com/demos/sortable/portlets.html)这种效果。就像igoogle首页那样的。冒似很简单,把要引用的js都加入后,然后几行代码就完事了。

<script type="text/javascript"> 
$(function() { 
$(".column").sortable({ 
connectWith: '.column' 
}); 
}); 
</script>

html代码省略...详情请查看演示

写完这些之后,你就可以试着拖拽了。有没有觉得很有成就感?不错,小伙子,有前途。sortable 有许多的参数,详细的自己去官网上看吧!只说下这里的connectWith:'.column'是什么意思,它就是说,凡是class为column的,它都可以把一个column的portlet拖到另一个column里去。试试你就知道了。当然今天的重点并不是怎么样去拖拽它,而是拖拽之后刷新还保存着当时的顺序。

遇到点小困难了,不过那也得上啊,不然以后都被女孩子肯嫁给你!^_^ 于是乎我就开始google百度了。有人说用sortable的serialize方法可以得到一个ID数组,可惜,我确实没有得到。如果你做到了也请你tell me 一下;还有人说用toArray方法也可以得到ID数组.这次也确实得到了。不过非常令人讨厌的事发生了。

$('.column').sortable('toArray');

这样也只能得到第一个class是column里的ID数组.用each()? I tried, but not work;可能你能做到,也请你告诉我吧!所以只能转走其他方法了。或许你会说,这还不简单么,直接把整个网页的布局存起来不就OK了?哈哈,I also think so!通过iedeveloper调试工具发现,它们拖动之后发现了改变,变的不是样式,而是div的先后顺序。如果我把整个内容保存起来的话,似乎也行得通,不过量就有点大了,也不适于动态的内容。怎么办呢,于是我就想着只存它们的ID顺序不就O了吗?于是我又给它们每人一个ID了。

万事开头难,有了这个思路了之后,你是否已经厕所打开了呢?我先去下便下,谢谢开门,马上回来!

接下来就一步步按照这个思路来吧。首先是获取到所有的column.

$.each($(".column"), function(m) {}

再找每个column下的portlet;

$.each($(".column"), function(m) {
$.each($(this).children(".portlet"), function(d) {
}

接着就是把它们按自己的方式存起来。

function saveLayout(){ 
var list = ""; 
$.each($(".column"), function(m) { 
list += $(this).attr('id') + ":"; 
$.each($(this).children(".portlet"), function(d) { 
list += $(this).attr('id') + "@"; 
}) 
list += "|"; 
}) 
$.cookie("list", list)}

这里还用到了另一组件jquery.cookie

改下开始的

$(".column").sortable({ 
connectWith: '.column', 
stop: saveLayout 
});

stop是指拖拽结束后触发的事件.

最后就是按顺序读到容器里去,这里我就不多说了,只可意会,不能言传哈。贴代码吧:

var list = $.cookie("list"); //获取cookie里的list值 
//alert(list) 
var arrColumn = list.split('|'); 
$.each(arrColumn, function(m, n) { 
var elemId = n.split(':')[0]; //容器ID 
var arrRow = n.split(':')[1] ? n.split(':')[1].split('@') : ""; //单个序列ID 
$.each(arrRow, function(m, n) { 
if (n) {//排除空值 
$("#" + elemId).append($("#sb" + n).attr('id', n))//把序列填加进容器 
} 
}); 
})

好了,今天就这样吧,打字排版花了我一个小时了,公司给我的是一小时16块RMB。所以BYE!
如果你有任何的问题,都不要来问我,我很忙。到QQ群5678537里找其他人探讨吧!

演示代码http://demo.3water.com/js/Sortable/Sortable.htm

Javascript 相关文章推荐
Jquery异步请求数据实例代码
Dec 28 Javascript
jQuery动态创建html元素的常用方法汇总
Sep 05 Javascript
简介JavaScript中的unshift()方法的使用
Jun 09 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
Mar 03 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
Apr 02 jQuery
JavaScript之map reduce_动力节点Java学院整理
Jun 29 Javascript
vue中计算属性(computed)、methods和watched之间的区别
Jul 27 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
Apr 08 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
Jun 06 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
Oct 11 Javascript
JavaScript事件的委托(代理)的用法示例详解
Feb 18 Javascript
javascript面向对象的方式实现的弹出层效果代码
Jan 28 #Javascript
jquery 常用操作方法
Jan 28 #Javascript
jquery 经典动画菜单效果代码
Jan 26 #Javascript
使用JQuery进行跨域请求
Jan 25 #Javascript
javascript 的Document属性和方法集合
Jan 25 #Javascript
起点页面传值js,有空研究学习下
Jan 25 #Javascript
js 巧妙去除数组中的重复项
Jan 25 #Javascript
You might like
高亮度显示php源代码
2006/10/09 PHP
Banner程序
2006/10/09 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
php打印一个边长为N的实心和空心菱型的方法
2015/03/02 PHP
如何使用Gitblog和Markdown建自己的博客
2015/07/31 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
javascript使用activex控件的代码
2011/01/27 Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
2016/05/17 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
JS实现简易日历效果
2021/01/25 Javascript
Python多进程编程技术实例分析
2014/09/16 Python
Python中optparse模块使用浅析
2015/01/01 Python
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
毕业生自我推荐
2013/11/04 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript