基于jQuery实现的百度导航li拖放排列效果,即时更新数据库


Posted in Javascript onJuly 31, 2012

index.php中 var autoSave = false; 控制不自动提交。
index.php

<?php 
require 'db.php'; 
$query = "SELECT `id`,`order`,`name` FROM `limove` ORDER BY `order`"; 
$lis = mysql_query($query,$conn); 
$li_count = mysql_num_rows($lis); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>li Move</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<meta name="Keywords" content="" /> 
<meta name="Description" content="" /> 
<script type="text/javascript" src="jquery-1.6.2.min.js"></script> 
</head> 
<body> 
<style> 
ul{ 
border: 1px solid red; 
height: 150px; 
margin: auto; 
width: 745px; 
} 
li{ 
border: 1px solid #AABBCC; 
float: left; 
list-style: none outside none; 
margin: 10px; 
text-align: center; 
width: 120px; 
cursor: move; 
} 
#reset{ 
border: 1px solid #AABBCC; 
cursor: pointer; 
float: right; 
height: 20px; 
padding: 2px; 
width: 40px; 
} 
#save{ 
border: 1px solid #AABBCC; 
cursor: pointer; 
float: right; 
height: 20px; 
padding: 2px; 
width: 40px; 
} 
</style> 
<div id="reset">Reset</div> 
<div id="save">Save</div> 
<ul> 
<?php 
while($li = mysql_fetch_assoc($lis)){ 
echo '<li id="'.$li['id'].'" order="'.$li['order'].'">'.$li['name'].'</li>'; 
} 
?> 
</ul> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$("ul").css({height:<?php echo (ceil($li_count/5)*40+10) ?>}); 
var on_move_li = ''; 
var on_move_li_offset = ''; 
var on_move_li_index = ''; 
var autoSave = false; 
function bindMoveListening(){ 
$("li").mousedown(function(){ 
on_move_li_offset = $(this).offset(); 
on_move_li = $(this); 
on_move_li_index = on_move_li.prevAll().length; 
if(on_move_li_index == 0) var index = 1; 
else var index = on_move_li_index; 
//创建空li 
$("ul").children("li").eq(index-1).after('<li class="dashed" style="border:1px dashed #AABBCC"> </li>') 
on_move_li.addClass('moving').css({left:on_move_li_offset.left,top:on_move_li_offset.top,position:'absolute','z-index':3,border:'1px dashed #AABBCC'}); 
$("ul").mousemove(function(e){ 
if($(this).find(".moving").length != 0) { 
var clientX = e.clientX-60; 
var clientY = e.clientY-20; 
on_move_li.css({left:clientX,top:clientY}); 
} 
}); 
$("ul").mouseup(function(e){ 
if($(this).find(".moving").length != 0) { 
var clientX = e.clientX; 
var clientY = e.clientY; 
var times = Math.floor((clientY-(on_move_li_offset.top+10))/42); 
var index = (times*5)+(Math.floor((clientX-(on_move_li_offset.left+50))/120)+on_move_li_index); 
if(index > <?php echo $li_count ?>) index = <?php echo $li_count ?>; 
on_move_li.attr('class',null).attr('style',null); 
$(".dashed").remove(); 
var fromid = on_move_li.attr('id'); 
var fromorder = on_move_li.attr('order'); 
var toorder = $("ul").children("li").eq(index).attr('order'); 
if(index == on_move_li_index && index>0) index = index-1; 
if(on_move_li_index == 0 && (index == -1||index == 0) ) $("ul").children("li").eq(1).before(on_move_li); 
else if(index == -1) $("ul").children("li").eq(0).before(on_move_li); 
else $("ul").children("li").eq(index).after(on_move_li); 
if(autoSave){ 
$.ajax({ 
url:'limove_process.php', 
type:'POST', 
data:{'fromid':fromid,'fromorder':fromorder,'toorder':toorder}, 
success:function(newdata){ 
$("ul").empty().append(newdata); 
bindMoveListening(); 
} 
}); 
} 
} 
}); 
}); 
$("#reset").click(function(){ 
$.ajax({ 
url:'limove_reset.php', 
type:'POST', 
success:function(newdata){ 
$("ul").empty().append(newdata); 
bindMoveListening(); 
} 
}); 
}); 
$("#save").click(function(){ 
var data = ''; 
var lis = $("ul").children("li"); 
$.each(lis,function(i){ 
data += lis.eq(i).attr('id')+','; 
}); 
$.ajax({ 
url:'limove_save.php', 
type:'POST', 
data:{'data':data.substr(0,data.length-1)}, 
success:function(newdata){ 
$("ul").empty().append(newdata); 
bindMoveListening(); 
} 
}); 
}); 
} 
bindMoveListening(); 
}); 
</script> 
</body> 
</html>

db.php
<?php 
static $connect = null; 
static $table = ''; 
if(!isset($connect)) { 
$connect = mysql_connect("localhost","root",""); 
if(!$connect) { 
$connect = mysql_connect("localhost","Zjmainstay",""); 
} 
if(!$connect) { 
die('Can not connect to database.Fatal error handle by /test/db.php'); 
} 
mysql_select_db("test",$connect); 
mysql_query("SET NAMES utf8",$connect); 
$conn = &$connect; 
$db = &$connect; 
}

自动提交处理文件 limove_process.php
<?php 
require 'db.php'; 
$fromid = $_POST['fromid']; 
$fromorder = $_POST['fromorder']; 
$toorder = $_POST['toorder']; 
$updateorder = $toorder; 
$eqf = ''; 
$eqt = '='; 
$symbol = '-'; 
$notZero = 'AND `order`>1'; 
if($fromorder > $toorder){ 
$eqf = '='; 
$eqt = ''; 
$symbol = '+'; 
$fromorder = $toorder; 
$toorder = $_POST['fromorder']; 
$updateorder = $fromorder; 
$notZero = ''; 
} 
mysql_query("START TRANSACTION",$conn); 
$query = "UPDATE `limove` SET `order`=`order`{$symbol}1 WHERE (`order`>{$eqf}{$fromorder} AND `order`<{$eqt}{$toorder} {$notZero})"; 
$return1 = mysql_query($query,$conn); 
$query = "UPDATE `limove` SET `order`={$updateorder} WHERE `id`={$fromid}"; 
$return2 = mysql_query($query,$conn); 
if($return1&$return2){ 
mysql_query("COMMIT",$conn); 
}else { 
mysql_query("ROLLBACK",$conn); 
} 
$query = "SELECT `id`,`order`,`name` FROM `limove` ORDER BY `order`"; 
$lis = mysql_query($query,$conn); 
while($li = mysql_fetch_assoc($lis)){ 
echo '<li id="'.$li['id'].'" order="'.$li['order'].'">'.$li['name'].'</li>'; 
} 
exit(0);

保存按钮处理文件 limove_save.php
<?php 
require 'db.php'; 
$data = explode(',',$_POST['data']); 
mysql_query("START TRANSACTION",$conn); 
$return = 1; 
foreach($data as $order => $id){ 
$order++; 
$query = "UPDATE `limove` SET `order`={$order} WHERE `id`={$id}"; 
$return = mysql_query($query,$conn)&$return; 
} 
if($return){ 
mysql_query("COMMIT",$conn); 
}else { 
mysql_query("ROLLBACK",$conn); 
} 
$query = "SELECT `id`,`order`,`name` FROM `limove` ORDER BY `order`"; 
$lis = mysql_query($query,$conn); 
while($li = mysql_fetch_assoc($lis)){ 
echo '<li id="'.$li['id'].'" order="'.$li['order'].'">'.$li['name'].'</li>'; 
} 
exit(0);

重置按钮处理文件 limove_reset.php
<?php 
require 'db.php'; 
mysql_query("UPDATE limove SET `order`=`id`"); 
$query = "SELECT `id`,`order`,`name` FROM `limove` ORDER BY `order`"; 
$lis = mysql_query($query,$conn); 
while($li = mysql_fetch_assoc($lis)){ 
echo '<li id="'.$li['id'].'" order="'.$li['order'].'">'.$li['name'].'</li>'; 
} 
exit(0);

jquery-1.6.2.min.js文件下载: jquery-1.6.2.min.js
软件包下载:limove_3water.rar
目录包含文件,如下图:

基于jQuery实现的百度导航li拖放排列效果,即时更新数据库

程序运行后界面:

基于jQuery实现的百度导航li拖放排列效果,即时更新数据库

作者:Zjmainstay


出处:http://www.cnblogs.com/Zjmainstay/

Javascript 相关文章推荐
javascript简易缓动插件(源码打包)
Feb 16 Javascript
教你如何使用PHP输出中文JSON字符串
May 22 Javascript
AngularJS入门教程(零):引导程序
Dec 06 Javascript
js获取json元素数量的方法
Jan 27 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
Mar 26 Javascript
jquery设置表单元素为不可用的简单代码
Jul 04 Javascript
EasyUI创建对话框的两种方式
Aug 23 Javascript
HTML5 实现的一个俄罗斯方块实例代码
Sep 19 Javascript
JS匿名函数实例分析
Nov 26 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
Jun 28 Javascript
JavaScript对象字面量和构造函数原理与用法详解
Apr 18 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
Jul 31 #Javascript
jQuery.each()用法分享
Jul 31 #Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 #Javascript
JavaScript中的私有/静态属性介绍
Jul 26 #Javascript
13 个JavaScript 性能提升技巧分享
Jul 26 #Javascript
了解一点js的Eval函数
Jul 26 #Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 #Javascript
You might like
php网页后退不再出现过期
2007/03/08 PHP
discuz authcode 经典php加密解密函数解析
2020/07/12 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
2015/03/19 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
2017/01/08 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
canvas红包照片实例分享
2017/02/28 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
详解python基础之while循环及if判断
2017/08/24 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python实现密码薄文件读写操作
2019/12/16 Python
用60行代码实现Python自动抢微信红包
2021/02/04 Python
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
周鸿祎:教你写创业计划书
2013/12/30 职场文书
学术会议欢迎词
2014/01/09 职场文书
经典广告词大全
2014/03/14 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
校园广播稿100字
2014/10/06 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
营运督导岗位职责
2015/04/10 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
Python实现抖音热搜定时爬取功能
2022/03/16 Python
MYSQL如何查看操作日志详解
2022/05/30 MySQL
详解Spring Security如何在权限中使用通配符
2022/06/28 Java/Android
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python