js 利用jquery.gridly.js实现拖拽并且排序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src=‘javascripts/jquery.js‘ type=‘text/javascript‘></script>
    <script src=‘javascripts/jquery.gridly.js‘ type=‘text/javascript‘></script>
</head>
<style type="text/css">
  #gridly
  {
    position: relative;
    width: 300px;
  }
  #gridly div{
    background: red;
    width: 60px;
    height: 60px;
  }
</style>
<body>
    <div id="gridly">
      <div user_id="1">1</div>
      <div user_id="2">2</div>
      <div user_id="3">3</div>
      <div user_id="4">4</div>
      <div user_id="5">5</div>
      <div user_id="6">6</div>
      <div user_id="7">7</div>
      <div user_id="8">8</div>
      <div user_id="9">9</div>
      <div user_id="10">10</div>
    </div>

    <script>
        //拖拽组件设置
        var gridly_set = {
        //reordering拖拽前回调函数,reordered拖拽后回调函数
        callbacks:{ reordering: reordering , reordered: reordered },
        //间距
        gutter:60,
        //显示列数
        columns:6
        };

        //加载拖拽组件
        $(‘#gridly‘).gridly(gridly_set);

        //拖拽前回调
        function reordering(){
        console.log(‘reordering‘);
        }

        //拖拽后回调
        function reordered(){
        console.log(‘reordered‘);
        //隔100ms 防止在拖拽放下那一瞬间 返回的left top不准确
        setTimeout(get_user_id_data,100);
        }

        //获取user_ids 并排序 且 ajax提交
        function get_user_id_data(){
        var dom = $(‘#gridly div‘);
        var tmp = {};
        // 列数的权重 必须保证此数字大于每行的最大宽度
        // 其实可以用columns*(gutter+base_width) 来计算 但鉴于columns不经常变 没必要这样写
        var col_base_num = 10000;
        dom.each(function(){
          var self = $(this);
          var left_num = self.css(‘left‘).replace(/px/,‘‘);
          var top_num = self.css(‘top‘).replace(/px/,‘‘);
          //加1 保证top大于0
          var top_tmp = parseInt(top_num) + 1;
          //权重 = left + (top+1)*col_base_num
          var weight = parseInt(left_num) + (top_tmp*col_base_num);
          var user_id = self.attr(‘user_id‘);
          tmp[weight] = user_id;
        });

        //利用对象本身对key的排序功能 实现排序
        var i;
        var arr = [];
        for(i in tmp){
          var r = tmp[i];
          arr.push(r);
        }

        //排序后的数组
        console.log(arr);
        }
    </script>
</body>
</html>

 

jquery 以及 jquery.gridly.js 放至相对目录

效果:

时间: 2024-12-21 09:08:23

js 利用jquery.gridly.js实现拖拽并且排序的相关文章

nw.js FrameLess Window下的窗口拖拽与窗口大小控制

nw.js FrameLess Window下的窗口拖拽与窗口大小控制 很多时候,我们觉得系统的Frame框很难看,于是想自定义. 自定义Frame的第一步是在package.config文件中将frame选项设置为false. { "name": "1", "main": "index.html", "nodejs": true, "single-instance": false, &

jQuery表单验证插件----利用jquery.metadata.js将校验规则写到控件中

一.下载依赖包 网盘下载:https://yunpan.cn/cryvgGGAQ3DSW  访问密码 f224 二. 添加一个另外一个插件jquery.metadata.js 并把校验规则写在控件里面. 三.需要改写触发校验的方式. $("#commentForm").validate({meta: "validate"}); 四.详细代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit

What&#39;s the difference between jquery.js and jquery.min.js?

They are both the same functionally but the .min one has all unnecessary characters removed in order to make the file size smaller. Just to point out as well, you are better using the minified version (.min) for your live environment as Google are no

利用插件(jQuery-ui.js)实现表格行的拖拽排序

template 模板(html) 首先要引入jQuery-ui.js的文件.import './../../scripts/base/jquery/jquery-ui.min.js';<table class="table-common" id="aggVDtTable"> <thead> <tr style="width: 100%;"> <th class="th1" style

【 D3.js 进阶系列 — 6.0 】 拖拽的应用(Drag)

拖拽(Drag)是交互式中很重要的一种,本文将讲解拖拽的使用方法. 1. drag的定义 D3中可用 d3.behavior.drag() 来定义 drag 行为. var drag = d3.behavior.drag() .on("drag", dragmove); function dragmove(d) { d3.select(this) .attr("cx", d.cx = d3.event.x ) .attr("cy", d.cy =

原生JS实现弹出窗口的拖拽(直接copy可用)

上一篇说了一下弹出窗口功能的实现思路,一般情况下紧接着就会需要做到弹窗的移动,当然现在有很插件.库比如hammer可以使用,效率也非常好.但我觉得还是有必要了解一下原生JS的实现思路及方式,如下: 思路:拖动这个操作起始分为三个部分: 鼠标左键按下,此时才开始可以拖动: 鼠标移动,拖动开始:根据光标的移动给div相对应的纵轴.横轴的偏移: 鼠标左键松手,拖动结束,不可以再拖动了. 每一步需要做的事: 1中需要将初始化的拖动标示量置为true(可以拖动了).记录光标起始坐标和div的起始坐标 2中

关于js在一个固定的盒子里面拖拽的问题(包含临界值)

回武汉打卡第三天,武汉加油,逆战必胜!今天我们一起分享一下js拖拽的问题. 当然实现拖拽方法是有很多的,下面简单讲一种方法,大致思路如下: 首先需要用到的事件主要有  onmousedown,onmousemove,onmouseup.因为是小盒子(small)在拖拽拖拽,所以首先onmousedown是绑定在small小盒子上面:而拖拽是在文档中进行的,所以onmousemove和onmouseup可以写在文档对象上: 其次css在书写时记得使用定位,不要使用fixed(位置是相对于浏览器窗口

使用Jcrop.js和jQuery.form.js,用ImageIO等进行头像上传缩放及裁剪

首先,Java代码里带一个获取ImageReader的Iterator /** * 从网上摘抄的. * 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader 声称能够解码指定格式. * 参数:postFix - 包含非正式格式名称 .(例如 "jpeg" 或 "tiff")等 . * * @param postFix * 文件的后缀名 * @author 刘各欢 * @return */ public Iterator&

一款基于jQuery的支持鼠标拖拽滑动焦点图

记得之前我们分享过一款jQuery全屏广告图片焦点图,图片切换效果还不错.今天我们要分享另外一款jQuery焦点图插件,它的特点是支持鼠标拖拽滑动,所以在移动设备上使用更加方便,你只要用手指滑动屏幕即可切换图片. 在线预览   源码下载 实现的代码. html代码: <div class="main_visual"> <div class="flicking_con"> <a class="on" href=&quo