jquery中的sortable排序之后的保存狀態(tài)的解決方法
首先,在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代碼省略...詳情請(qǐng)查看演示
寫完這些之后,你就可以試著拖拽了。有沒有覺得很有成就感?不錯(cuò),小伙子,有前途。sortable 有許多的參數(shù),詳細(xì)的自己去官網(wǎng)上看吧!只說下這里的connectWith:'.column'是什么意思,它就是說,凡是class為column的,它都可以把一個(gè)column的portlet拖到另一個(gè)column里去。試試你就知道了。當(dāng)然今天的重點(diǎn)并不是怎么樣去拖拽它,而是拖拽之后刷新還保存著當(dāng)時(shí)的順序。
遇到點(diǎn)小困難了,不過那也得上啊,不然以后都被女孩子肯嫁給你!^_^ 于是乎我就開始google百度了。有人說用sortable的serialize方法可以得到一個(gè)ID數(shù)組,可惜,我確實(shí)沒有得到。如果你做到了也請(qǐng)你tell me 一下;還有人說用toArray方法也可以得到ID數(shù)組.這次也確實(shí)得到了。不過非常令人討厭的事發(fā)生了。
$('.column').sortable('toArray');
這樣也只能得到第一個(gè)class是column里的ID數(shù)組.用each()? I tried, but not work;可能你能做到,也請(qǐng)你告訴我吧!所以只能轉(zhuǎn)走其他方法了?;蛟S你會(huì)說,這還不簡單么,直接把整個(gè)網(wǎng)頁的布局存起來不就OK了?哈哈,I also think so!通過iedeveloper調(diào)試工具發(fā)現(xiàn),它們拖動(dòng)之后發(fā)現(xiàn)了改變,變的不是樣式,而是div的先后順序。如果我把整個(gè)內(nèi)容保存起來的話,似乎也行得通,不過量就有點(diǎn)大了,也不適于動(dòng)態(tài)的內(nèi)容。怎么辦呢,于是我就想著只存它們的ID順序不就O了嗎?于是我又給它們每人一個(gè)ID了。
萬事開頭難,有了這個(gè)思路了之后,你是否已經(jīng)廁所打開了呢?我先去下便下,謝謝開門,馬上回來!
接下來就一步步按照這個(gè)思路來吧。首先是獲取到所有的column.
$.each($(".column"), function(m) {}
再找每個(gè)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是指拖拽結(jié)束后觸發(fā)的事件.
最后就是按順序讀到容器里去,這里我就不多說了,只可意會(huì),不能言傳哈。貼代碼吧:
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('@') : ""; //單個(gè)序列ID
$.each(arrRow, function(m, n) {
if (n) {//排除空值
$("#" + elemId).append($("#sb" + n).attr('id', n))//把序列填加進(jìn)容器
}
});
})
好了,今天就這樣吧,打字排版花了我一個(gè)小時(shí)了,公司給我的是一小時(shí)16塊RMB。所以BYE!
如果你有任何的問題,都不要來問我,我很忙。到QQ群5678537里找其他人探討吧!
演示代碼http://demo.jb51.net/js/Sortable/Sortable.htm
- jQuery實(shí)現(xiàn)tag便簽去重效果的方法
- jQuery表格排序組件-tablesorter使用示例
- jquery tablesorter.js 支持中文表格排序改進(jìn)
- jQuery利用sort對(duì)DOM元素進(jìn)行排序操作
- 通過jquery-ui中的sortable來實(shí)現(xiàn)拖拽排序的簡單實(shí)例
- jquery.tableSort.js表格排序插件使用方法詳解
- jquery中push()的用法(數(shù)組添加元素)
- jquery遍歷數(shù)組與篩選數(shù)組的方法
- Jquery 數(shù)組操作大全個(gè)人總結(jié)
- jQuery簡單實(shí)現(xiàn)對(duì)數(shù)組去重及排序操作實(shí)例
相關(guān)文章
jQuery插件echarts實(shí)現(xiàn)的去掉X軸、Y軸和網(wǎng)格線效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件echarts實(shí)現(xiàn)的去掉X軸、Y軸和網(wǎng)格線效果,結(jié)合實(shí)例形式分析了echarts插件繪制表格圖及圖形相關(guān)屬性設(shè)置操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03利用jQuery的動(dòng)畫函數(shù)animate實(shí)現(xiàn)豌豆發(fā)射效果
本文主要講解jQuery的animate函數(shù)的基本用法,利用動(dòng)畫函數(shù)animate實(shí)現(xiàn)豌豆發(fā)射的效果,對(duì)于學(xué)習(xí)animate很有幫助,有需要的可以參考借鑒。2016-08-08Juery解決tablesorter中文排序和字符范圍的方法
這篇文章主要介紹了Juery解決tablesorter中文排序和字符范圍的方法,實(shí)例分析了jQuery針對(duì)tablesorter中文排序和字符范圍的解決方法,需要的朋友可以參考下2015-05-05jquery實(shí)現(xiàn)全選、反選、獲得所有選中的checkbox
這篇文章主要介紹了jquery實(shí)現(xiàn)全選、反選、獲得所有選中的checkbox功能,對(duì)checkbox感興趣的小伙伴們可以參考一下2015-12-12jquery+css3問卷答題卡翻頁動(dòng)畫效果示例
本篇文章主要介紹了jquery css3問卷答題卡翻頁動(dòng)畫效果,具有一定的參考價(jià)值,有需要的朋友可以了解一下。2016-10-10jQuery實(shí)現(xiàn)簡單漂亮的Nav導(dǎo)航菜單效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)簡單漂亮的Nav導(dǎo)航菜單效果,涉及jQuery響應(yīng)鼠標(biāo)事件動(dòng)態(tài)遍歷與操作頁面元素屬性的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-03-03jQuery插件slicebox實(shí)現(xiàn)3D動(dòng)畫圖片輪播切換特效
Slicebox是一款效果非常華麗的jquery和css3 3d幻燈片插件。Slicebox幻燈片插件能夠?qū)D片切片,然后做3d旋轉(zhuǎn)。Slicebox幻燈片插件共有4種效果,視覺沖擊感非常強(qiáng)。2015-04-04jQuery插件HighCharts繪制2D餅圖效果示例【附demo源碼下載】
這篇文章主要介紹了jQuery插件HighCharts繪制2D餅圖效果,結(jié)合完整實(shí)例形式分析了jQuery使用HighCharts插件繪制餅圖效果的操作步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-03-03