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 刷新全集常用代码
Nov 22 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
js实现照片墙功能实例
Feb 05 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
Apr 07 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
Javascript 引擎工作机制详解
Nov 30 Javascript
Bootstrap导航条的使用和理解3
Dec 14 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
ES6小技巧之代替lodash
Jun 07 Javascript
在vue中把含有html标签转为html渲染页面的实例
Oct 28 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中实现图片的锐化
2006/10/09 PHP
php中inlcude()性能对比详解
2012/09/16 PHP
Laravel 5.3 学习笔记之 安装
2016/08/28 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
php读取本地json文件的实例
2018/03/07 PHP
Yii框架函数简单用法分析
2019/09/09 PHP
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
jquery图片滚动放大代码分享(1)
2015/08/25 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
webpack4.0+vue2.0利用批处理生成前端单页或多页应用的方法
2019/06/28 Javascript
vue中 this.$set的用法详解
2019/09/06 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python2和python3哪个使用率高
2020/06/23 Python
python破解同事的压缩包密码
2020/10/14 Python
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
房产代理公证处委托书
2014/04/04 职场文书
兽医医药专业求职信
2014/07/27 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
小学教师师德师风自我评价
2015/03/04 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS