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实现异步刷新的代码(转载)
Mar 29 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
JS操作iframe里的dom(实例讲解)
Jan 29 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
Mar 12 Javascript
JavaScript基础教程之alert弹出提示框实例
Oct 16 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
MUI  Scroll插件的使用详解
Apr 13 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
Jul 07 Javascript
React中this丢失的四种解决方法
Mar 12 Javascript
详解Vue.directive 自定义指令
Mar 27 Javascript
layui弹出框Tab选项卡的示例代码
Sep 04 Javascript
使用JS监听键盘按下事件(keydown event)
Nov 07 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数据库类
2009/05/27 PHP
php的扩展写法总结
2019/05/14 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
node.js中的console用法总结
2014/12/15 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
vue中设置height:100%无效的问题及解决方法
2018/07/27 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
2019/04/11 Javascript
ionic3双击返回退出应用的方法
2019/09/17 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
Python中splitlines()方法的使用简介
2015/05/20 Python
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
python try...finally...的实现方法
2020/11/25 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
软件测试面试题
2014/01/05 面试题
Shell脚本如何向终端输出信息
2014/04/25 面试题
如何定义一个可复用的服务
2014/09/30 面试题
三八妇女节超市活动方案
2014/08/18 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js