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 相关文章推荐
Javascript解决常见浏览器兼容问题的12种方法
Jan 04 Javascript
javaScript面向对象继承方法经典实现
Aug 20 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
Dec 27 Javascript
JavaScript严格模式禁用With语句的原因
Oct 20 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
Dec 03 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
Oct 26 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
Feb 05 Javascript
基于vue cli重构多页面脚手架过程详解
Jan 23 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
Jan 31 jQuery
vue-rx的初步使用教程
Sep 21 Javascript
vue实现公共方法抽离
Jul 31 Javascript
JavaScript 中的六种循环方法
Jan 06 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编写和读取XML的几种方式
2013/01/12 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
jcrop基本参数一览
2013/07/16 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
深入理解js中this的用法
2016/05/28 Javascript
谈谈target=_new和_blank的不同之处
2016/10/25 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
微信小程序开发之实现自定义Toast弹框
2017/06/08 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
实例讲解Python中函数的调用与定义
2016/03/14 Python
python daemon守护进程实现
2016/08/27 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
python绘制热力图heatmap
2020/03/23 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
解决PyCharm不在run输出运行结果而不是再Console里输出的问题
2020/09/21 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
新西兰最大、占有率最高的综合性药房:PharmacyDirect药房中文网
2020/11/03 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
自动化职业生涯规划书范文
2014/01/03 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
人民币使用说明书
2019/04/17 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
MySQL如何使备份得数据保持一致
2022/05/02 MySQL
box-shadow单边阴影的实现
2023/05/21 HTML / CSS