jQuery實現拖動布局並將排序結果儲存到資料庫

2021-08-31 06:05:41 字數 4123 閱讀 4841

最近的專案中涉及到了使用者個性化定製首頁的需求,使用者要求可以隨意拖動首頁模組的位置,來實現個性化的布局。本文講解如何使用jquery和php實現拖動布局並將拖動後的布局位置儲存到資料庫。

很多**的拖動布局的例子都是採用瀏覽器的cookie來記錄使用者拖動模組的位置,也就是說拖動後各模組的排序位置資訊是記錄在客戶端的cookie裡的。當使用者清空客戶端的cookie或瀏覽器的cookie過期後,再次訪問頁面時,發現布局又還原成最初的狀態。這種cookie記錄的方式使用簡單,但不適合像個人中心、管理系統主頁的要求。

本例實現的效果:採用jquery ui的sorttable拖動排序外掛程式實現拖動效果。

將拖動後的模組的位置通過ajax傳給服務端php程式。

php程式處理位置資訊後,更新資料庫中相應的字段內容。

xhtml

id="loader"

>

id="module_list"

>

type

="hidden"

id="orderlist"

/>

class

="modules"

title

="1"

>

>

1... 

div#loader用於顯示提示資訊,如loading...,#orderlist是乙個隱藏域,用於記錄模組的排序值。「...」表示迴圈了n個div.modules,具體生成的**在後面會講到。

css

#module_list.modules

.m_title

#loader

簡單,關鍵是要給.modules乙個想左浮動的樣式float:left。

jquery

$(function()); 

var$show = $("#loader"

);  

var$orderlist = $("#orderlist"

);var$list = $("#module_list"

);      

$list.sortable(); 

varnewid = new_order.join(','

);varoldid = $orderlist.val(); 

$.ajax(,   //id:新的排列對應的id,order:原排列順序

beforesend:function()

success:function(msg)

}); 

}

}); 

});

拖動排序的動作都寫在$list.sortable()裡面,引數設定和方法請看**的注釋。juery ui的sortable外掛程式提供了很多方法和引數配置,詳情請檢視

拖動完成要執行乙個update方法,該方法需要將拖動後排序的位置通過ajax提交給後台處理。

varnew_order = ; 

$list.children(".modules"

).each(function()); 

varnewid = new_order.join(','

);varoldid = $orderlist.val();

說明:迴圈每個模組.modules,獲取拖動排序後每個模組的屬性title值,將值通過逗號連線成乙個字串。原來的未拖動之前的排序值從隱藏域orderlist中獲取。

獲取排序值後,就是通過ajax和後台程式互動了。

phpupdate.php接收前端ajax通過post提交過來的兩個引數,及排序前的值和排序後的值,將這連個值進行對比,如果不相等,則更新資料庫中的排序字段,完成了拖動排序後的及時儲存。

include_once("connect.php"

);//連線資料庫

$

order

= $_post

['order'

];$

itemid

= trim($_post

['id'

]); 

if(!empty($

itemid

))else} }

首頁index.php

再回到展示布局的首頁index.php。index.php通過連線資料庫讀取模組的排序資訊,並將各模組顯示出來。

首先別忘了載入jquery庫和jquery ui的sortable拖動排序外掛程式。

讀取資料庫的排序字段值。

include_once("connect.php"

);  

$

query

=mysql_query("select * from sortlist where id=1"

);if($

rs=mysql_fetch_array($

query

))$

sort_arr

=explode(","

,$

sort

);$

len=count($

sort_arr

);

迴圈顯示各模組。

id="loader"

>

id="module_list"

>

type

="hidden"

id="orderlist"

value

="<?php

echo

$

sort

;?>

"/>

<?php

for($i=0

;$

i<$

len;$

i++) ?>

jQuery實現拖動排序並將排序結果保

最近的專案中涉及到了使用者個性化定製首頁的需求,使用者要求可以隨意拖動首頁模組的位置,來實現個性化的布局。本文講解如何使用jquery實現拖動布局並將拖動後的布局位置儲存到資料庫。demo 很多 的拖動布局的例子都是採用瀏覽器的cookie來記錄使用者拖動模組的位置,也就是說拖動後各模組的排序位置資...

jQuery實現拖動

定位 給要拖動的物件設定乙個定位 position aboselute 座標 使用event.clientx event.clienty獲取滑鼠位置,使用obj.offset left obj.offset top獲取物件離瀏覽器左上角的座標 事件 mousedown,mouseup,mousemo...

jquery實現聊天視窗拖動

實現 滑鼠的點選按下事件 滑鼠的移動事件 滑鼠點選鬆開事件 思路 mousedown事件 當滑鼠點選聊天視窗,點選事件可以得到當前的滑鼠的點選位置並記錄下來,並得到當前視窗的左和上的偏移位置,還需要新增乙個滑鼠點選該聊天視窗的標誌位。document mousemove事件 滑鼠移動,觸發mouse...