jQuery拖动元素并对元素进行重新排序


Posted in Javascript onDecember 30, 2015

本文实例讲述了jQuery拖动元素并对元素进行重新排序的实现方法,分享给大家供大家参考,具体实现内容如下

效果图:

jQuery拖动元素并对元素进行重新排序

具体内容如下:

从上图可以看出我们今天要实现的功能。当用户拖动一个图片时,就能改变图片的已有排序并更新表中的排列顺序。比如用户可以随意拖动我们网站中的布局,如谷歌iGoogle就已经实现了。这样便很好的提高了用户体验。

下边,我们一步一步来实现这个功能。

<span id="show">
<div>
  <input id="check" type="checkbox" />
</div>
<div>
  <input type="hidden" id="orderlist" />
  <ul id="list">
    <asp:Repeater ID="rptOrder" runat="server">
    <ItemTemplate>
      <li id="<%#Eval("ID") %>" title="<%#Eval("OrderID") %>">
        <img alt="img" src="<%#Eval("Link") %>" />
      </li>
    </ItemTemplate>
    </asp:Repeater>   
  </ul>
</div>

有一个单选框,当用户选中后,拖动图片时对数据库中数据排序进行更改。隐藏域保存原来的图片排列顺序。ul显示图片列表。

为了能看得过去,稍微加了点样式:

var show = jQuery("#show"); //输出提示 
var orderlist = jQuery("#orderlist"); //原顺序 
var check = jQuery("#check"); //是否更新到数据库

首先将常用的选择器保存下来,这样后边调用就变得比较简洁。这一部大家肯定没有问题。^_^

//保存原来的排列顺序 
var order = []; 
list.children("li").each(function() { 
  order.push(this.title); //原排列顺序保存在title,得到后更改title 
  jQuery(this).attr("title", "你可以拖动进行排序"); 
}); 
orderlist.val(order.join(','));

保存原来的排列顺序到隐藏域。这里用到了数组的push()方法,就是将ul每个li中的title(原来的排列顺序)添加到数组中。最后用join()方法,得到了原排列顺序,返回一个字符串。现在排列顺序格式为1,2,3 。

//ajax更新 
var Update = function(itemid, itemorder) { 
  jQuery.ajax({ 
    type: "post", 
    url: "update.aspx", 
    //id:新的排列对应的ID,order:原排列顺序
    data: { id: itemid, order: orderlist.val() },  
    beforeSend: function() { 
      show.html("正在更新"); 
    }, 
    success: function() { 
      show.html("更新成功"); 
    } 
  }); 
};

接下来,将ajax更新块单独分出来。这样程序变得比较整洁,这块没有新东西。

//调用ajax更新方法 
var Submit = function(update) { 
  var order = []; 
  list.children("li").each(function() { 
    order.push(this.id); 
  }); 
  var itemid = order.join(','); 
  //如果单选框选中,则更新表中排列顺序 
  if (update) { 
    Update(itemid); 
  } 
  else { 
    show.html(""); 
  } 
};

和得到排列顺序类似,将ID组成一个字符串传递给了Update()方法。函数中的参数update为checkbox是否选中。

//执行排列操作 
list.sortable({ 
  opacity: 0.7, 
  update: function() { 
    Submit(check.attr("checked")); 
  } 
});

最后,执行排列操作。后台部分就是对现在ID对应原来排列顺序的更新,相信大家并不陌生。

可以看出如果不进行数据库操作,该插件只需要调用sorttable便可完成对元素的拖动。

以上就是jQuery拖动元素并对元素进行重新排序的实现方法,希望对大家的学习有所帮助。

Javascript 相关文章推荐
jQuery代码优化 事件委托篇
Nov 01 Javascript
js给onclick事件赋值,动态传参数实例解说
Mar 28 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
transport.js和jquery冲突问题的解决方法
Feb 10 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
Oct 22 Javascript
AngularJS 自定义指令详解及示例代码
Aug 17 Javascript
jQuery实现获取隐藏div高度的方法示例
Feb 09 Javascript
详解vue-cli3开发Chrome插件实践
May 29 Javascript
微信小程序实现左侧滑动导航栏
Apr 08 Javascript
OpenLayer3自定义测量控件MeasureTool
Sep 28 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
Nov 09 Javascript
Node.js文本文件BOM头的去除方法
Nov 22 Javascript
jQuery给元素添加样式的方法详解
Dec 30 #Javascript
Underscore源码分析
Dec 30 #Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
Dec 30 #Javascript
javascript实现禁止复制网页内容汇总
Dec 30 #Javascript
jquery实现树形菜单完整代码
Dec 29 #Javascript
javascript设置页面背景色及背景图片的方法
Dec 29 #Javascript
js获取及修改网页背景色和字体色的方法
Dec 29 #Javascript
You might like
使用php判断网页是否gzip压缩
2013/06/25 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
thinkPHP实现的省市区三级联动功能示例
2017/05/05 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
wap浏览自动跳转到wap页面的js代码
2014/05/17 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
JS数据类型分类及常用判断方法
2020/11/19 Javascript
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
Python tkinter实现日期选择器
2021/02/22 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
介绍一下SQL Server的全文索引
2013/08/15 面试题
爱国卫生月实施方案
2014/02/21 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
缓刑期间思想汇报范文
2014/10/10 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
Python WSGI 规范简介
2021/04/11 Python
Python Django ORM连表正反操作技巧
2021/06/13 Python
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
Python 数据可视化之Matplotlib详解
2021/11/02 Python
django 认证类配置实现
2021/11/11 Python
python中pymysql包操作数据库方法
2022/04/19 Python