整理一份拖拽排序自动保存的代码,后台是php
?? ?.tuozhuaitr{ ?? ??? ?cursor: pointer; ?? ?}
?? ?$(document).ready(function () { ? ? ? ? var fixHelperModified = function (e,tr) { ? ? ? ? ? ? ? ? var $originals = tr.children(); ? ? ? ? ? ? ? ? var $helper = tr.clone(); ? ? ? ? ? ? ? ? $helper.children().each(function (index) { ? ? ? ? ? ? ? ? ? ? $(this).width($originals.eq(index).width()) ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? ? ? return $helper; ? ? ? ? ? ? }, ? ? ? ? ? ? updateIndex = function (e,ui) { ? ? ? ? ? ? ? ? $('td.index',ui.item.parent()).each(function (i) { ? ? ? ? ? ? ? ? ? ? $(this).html(i + 1); ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? }; ? ? ? ? $("#sort tbody").sortable({ ? ? ? ? ? ? helper: fixHelperModified, ? ? ? ? ? ? stop: updateIndex ? ? ? ? }).disableSelection(); ? ? }); ?? ?function pressdown(id,event) { ? ? ? ? var oldid = []; ? ? ? ? var newid = []; ? ? ? ? var diffid = []; ? ? ? ? var i = 0; ? ? ? ? var heightYold = event.clientY;//获取鼠标按下时的y坐标 ? ? ? ? $(".paixuid").each(function () { ? ? ? ? ? ? oldid.push($(this)[0]['innerHTML']); ? ? ? ? }); ? ? ? ? $(this).mouseup(function (e) { ? ? ? ? ? ? var heightYnew = e.clientY;//获取鼠标up时的y坐标 ? ? ? ? ? ? $(".paixuid").each(function () { ? ? ? ? ? ? ? ? newid.push($(this)[0]['innerHTML']); ? ? ? ? ? ? }); ? ? ? ? ? ? for (i = 0; i < oldid.length; i++) { ? ? ? ? ? ? ? ? if (oldid[i] != newid[i]) { ? ? ? ? ? ? ? ? ? ? diffid.push(i); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? // debugger; ? ? ? ? ? ? if (heightYnew > heightYold) { ? ? ? ? ? ? ? ? //向下拖拽 ? ? ? ? ? ? ? ? var diffbig = diffid[diffid.length-1]; ? ? ? ? ? ? ? ? var yidongid = newid[diffbig];//查找移动的id ? ? ? ? ? ? ? ? //以diffbig位为参考 ? ? ? ? ? ? ? ? var yidongorder = oldid[diffbig]; ? ? ? ? ? ? ? ? var tuozhuaistyle = 1;//向下拖拽 ? ? ? ? ? ? } else if (heightYold > heightYnew) { ? ? ? ? ? ? ? ? //向上拖拽 ? ? ? ? ? ? ? ? var diffbig = diffid[0]; ? ? ? ? ? ? ? ? var yidongid = newid[diffbig]; ? ? ? ? ? ? ? ? var yidongorder = oldid[diffbig]; ? ? ? ? ? ? ? ? var tuozhuaistyle = 2;//向上拖拽 ? ? ? ? ? ? } else { ? ? ? ? ? ? } ? ? ? ? ? ? if (yidongid && yidongorder) { ? ? ? ? ? ? ? ? $.post('./index.php?c=userpublic&a=tuozhuai',{tuozhuaistyle:tuozhuaistyle,yidongid: yidongid,yidongorder: yidongorder,newid: newid,chengenum: diffbig},function (data) { ? ? ? ? ? ? ? ? ? ? location.reload(); ? ? ? ? ? ? ? ? }); ? ? ? ? ? ? } ? ? ? ? }); ? ? } //拖拽 ? ? public function tuozhuaiAction() ? ? { ? ? ? ? $yidongid = Request::post('yidongid');//移动的ID ? ? ? ? $tuozhuaistyle = Request::post('tuozhuaistyle');//拖拽的方式 ? ? ? ? $yidongorder = Request::post('yidongorder');//移动ID要参考的排序数的ID ? ? ? ? $chengenum = Request::post('chengenum');//要修改的数量 ? ? ? ? $newid = Request::post('newid');//新排列 ? ? ? ? $cankaoorder = $this->db->setTableName('content')->find($yidongorder);//参考的排序数 ? ? ? ? $yidong = $this->db->setTableName('content')->find($yidongid);//参考的排序数 ? ? ? ? if ($yidong['topstate'] == 1 && $cankaoorder['topstate'] == 1) { ? ? ? ? ? ? $data_be['topnum'] = $cankaoorder['topnum']; ? ? ? ? ? ? if ($yidong['topnum'] > $cankaoorder['topnum']) { ? ? ? ? ? ? ? ? $where = ' (topnum between ' . $cankaoorder['topnum'] . ' and ' . $yidong['topnum'] . ")and catid =" . $yidong['catid']; ? ? ? ? ? ? } else if ($yidong['topnum'] < $cankaoorder['topnum']) { ? ? ? ? ? ? ? ? $where = ' (topnum between ' . $yidong['topnum'] . ' and ' . $cankaoorder['topnum'] . ")and catid =" . $yidong['catid']; ? ? ? ? ? ? } ? ? ? ? ? ? $tuozhuai = $this->db->setTableName('content')->where($where)->getAll();//参考的排序数 ? ? ? ? ? ? foreach ($tuozhuai as $v) { ? ? ? ? ? ? ? ? if ($v['id'] == $yidongid) { ? ? ? ? ? ? ? ? ? ? $this->db->setTableName('content')->update(array('topnum' => $cankaoorder['topnum']),'id=?',$yidongid); ? ? ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? ? ? if ($tuozhuaistyle == 1) { ? ? ? ? ? ? ? ? ? ? ? ? $this->db->setTableName('content')->update(array('topnum' => $v['topnum'] + 1),$v['id']); ? ? ? ? ? ? ? ? ? ? ? ? //向下拖拽 ? ? ? ? ? ? ? ? ? ? } else if ($tuozhuaistyle == 2) { ? ? ? ? ? ? ? ? ? ? ? ? //向上拖拽 ? ? ? ? ? ? ? ? ? ? ? ? $this->db->setTableName('content')->update(array('topnum' => $v['topnum'] - 1),$v['id']); ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? if ($yidong['topstate'] == 0 && $cankaoorder['topstate'] == 0) { ? ? ? ? ? ? $data_be['listorder'] = $cankaoorder['listorder']; ? ? ? ? ? ? if ($yidong['listorder'] > $cankaoorder['listorder']) { ? ? ? ? ? ? ? ? $where = ' (listorder between ' . $cankaoorder['listorder'] . ' and ' . $yidong['listorder'] . ")and catid =" . $yidong['catid']; ? ? ? ? ? ? } else if ($yidong['listorder'] < $cankaoorder['listorder']) { ? ? ? ? ? ? ? ? $where = ' (listorder between ' . $yidong['listorder'] . ' and ' . $cankaoorder['listorder'] . ")and catid =" . $yidong['catid']; ? ? ? ? ? ? } ? ? ? ? ? ? $tuozhuai = $this->db->setTableName('content')->where($where)->getAll();//参考的排序数 ? ? ? ? ? ? foreach ($tuozhuai as $v) { ? ? ? ? ? ? ? ? if ($v['id'] == $yidongid) { ? ? ? ? ? ? ? ? ? ? $this->db->setTableName('content')->update($data_be,$yidongid); ? ? ? ? ? ? ? ? ? ? continue; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? if ($tuozhuaistyle == 1) { ? ? ? ? ? ? ? ? ? ? $this->db->setTableName('content')->update(array('listorder' => $v['listorder'] + 1),$v['id']); ? ? ? ? ? ? ? ? ? ? //向下拖拽 ? ? ? ? ? ? ? ? } else if ($tuozhuaistyle == 2) { ? ? ? ? ? ? ? ? ? ? //向上拖拽 ? ? ? ? ? ? ? ? ? ? $this->db->setTableName('content')->update(array('listorder' => $v['listorder'] - 1),$v['id']); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? } ?> 思路仅供参考 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |