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解决iframe高度自适应代码
Dec 20 Javascript
js操作select控件的几种方法
Jun 02 Javascript
关于img的href和src取变量及赋值的方法
Apr 28 Javascript
JavaScript学习笔记之JS对象
Jan 22 Javascript
在for循环中length值是否需要缓存
Jul 27 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
Jan 04 Javascript
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
React中使用外部样式的3种方式(小结)
May 28 Javascript
js实现适配移动端的拖动效果
Jan 13 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
Apr 30 jQuery
谈谈JavaScript令人迷惑的==与+
Aug 31 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
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
PHP截取指定图片大小的方法
2014/12/10 PHP
php实现mysql数据库连接操作及用户管理
2015/11/08 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
2016/09/22 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
利用jQuery的$.event.fix函数统一浏览器event事件处理
2009/12/21 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
JavaScript中的无阻塞加载性能优化方案
2014/10/10 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
Vue刷新修改页面中数据的方法
2018/09/16 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
python编程线性回归代码示例
2017/12/07 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
Python编译为二进制so可执行文件实例
2019/12/23 Python
python mock测试的示例
2020/10/19 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
公司员工的自我评价范例
2013/11/01 职场文书
工商治理实习生的自我评价
2014/01/15 职场文书
给校长的建议书500字
2014/05/15 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
资产移交协议书
2016/03/24 职场文书
关于Redis的主从复制及哨兵问题
2022/06/16 Redis