拖拽插件SortableJS

在项目中,经常会遇到一些涉及到拖拽的需求,github上面有一个开源的SortableJS的插件,支持Vue,React,Angular等多种框架,实现效果很好,基本可以满足大部分的需求,下面就第一次在jquery中的使用做个简单的demo记录。

  1. 引入文件Sortable.min.js
  2. 指定包裹容器的id
  3. 根据api开始创建使用即可

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Sortable. No jQuery.</title>
        <link href="st/app.css" rel="stylesheet" type="text/css" /><!--可去掉,不影响功能-->
    </head>
    <body>
        <div class="container" style="height: 520px">
            <div data-force="30" class="layer block" style="left: 14.5%; top: 0; width: 37%">
                <div class="layer title">List A</div>
                <ul id="foo" class="block__list block__list_words">
                    <li>1aaaбегемот测试</li>
                    <li>2корм</li>
                    <li>3антон</li>
                    <li>4сало</li>
                    <li>5железосталь</li>
                    <li>6валик</li>
                    <li>7кровать</li>
                    <li>8краб</li>
                </ul>
            </div>
        </div>
        <script src="Sortable.min.js"></script>
        <script>
            Sortable.create(document.getElementById(‘foo‘), {
                animation: 150,
                store: {//缓存到localStorage
                    get: function(sortable) {
                        var order = localStorage.getItem(sortable.options.group);
                        return order ? order.split(‘|‘) : [];
                    },
                    set: function(sortable) {
                        var order = sortable.toArray();
                        localStorage.setItem(sortable.options.group, order.join(‘|‘));
                    }
                },
                onAdd: function(evt) {
                    console.log(‘onAdd.foo:‘, [evt.item, evt.from]);
                },
                onUpdate: function(evt) {
                    console.log(‘onUpdate.foo:‘, [evt.item, evt.from]);
                },
                onRemove: function(evt) {
                    console.log(‘onRemove.foo:‘, [evt.item, evt.from]);
                },
                onStart: function(evt) {
                    console.log(‘onStart.foo:‘, [evt.item, evt.from]);
                },
                onSort: function(evt) {
                    console.log(‘onStart.foo:‘, [evt.item, evt.from]);
                },
                onEnd: function(evt) {
                    console.log(‘onEnd.foo:‘, [evt.item, evt.from]);
                }
            });
        </script>
    </body>
</html>

官方文档地址:https://github.com/SortableJS/Sortable
demo演示地址:http://sortablejs.github.io/Sortable/

.

原文地址:https://www.cnblogs.com/jianxian/p/11726999.html

时间: 2024-10-28 23:39:26

拖拽插件SortableJS的相关文章

jQuery拖拽插件制作拖拽排序特效

基于jQuery拖拽插件制作拖拽排序特效是一款非常实用的鼠标拖拽布局插件.效果图如下: 在线预览   源码下载 实现的代码. html代码: <h1>水平拖拽</h1> <div class="demo"> <div class="item item1"><span>1</span></div> <div class="item item2"><

一步一步实现JS拖拽插件

js拖拽是常见的网页效果,本文将从零开始实现一个简单的js插件. 一.js拖拽插件的原理 常见的拖拽操作是什么样的呢?整过过程大概有下面几个步骤: 1.用鼠标点击被拖拽的元素 2.按住鼠标不放,移动鼠标 3.拖拽元素到一定位置,放开鼠标 这里的过程涉及到三个dom事件:onmousedown,onmousemove,onmouseup.所以拖拽的基本思路就是: 1.用鼠标点击被拖拽的元素触发onmousedown (1)设置当前元素的可拖拽为true,表示可以拖拽 (2)记录当前鼠标的坐标x,y

JQuery之拖拽插件

一直以来,都对JS获取元素的位置感到非常的困惑:一会client.一会offset.一会scroll. 再加上各大浏览器之间的不兼容,唉,搞得哥晕晕乎乎的. 而很多页面效果都要用到这些位置.不得已,得练练,得记记. 下面就来说说这个基于 JQuery的简易拖拽插件吧. 按惯例,先说说拖拽的原理,以及搞这么一个东东的步骤: 那什么是拖拽呢? 看名字就知道了:就是把一个东东拖来拽去的. 放到我们的DOM上,就是改变它的位置. 它只有两个难点:1.如何知道是在拖? 2.如何知道从哪拖,拖到哪? 其实,

jquery拖拽插件Easydrag

在一些有弹出框的页面,会经常用到拖拽效果来增加用户体验,避免因弹出框遮挡一些元素.如果用原生的js来写的话,js兼容性很不好控制,经常由于浏览器事件的不统一而影响效果,今天给大家介绍一个拖拽插件easydrag,EasyDrag可以指定可拖动的区域,一个setHandler搞定,不错开源是个好东西,只需要一行代码便可轻松在主流浏览器上 使用方法示例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q

vue拖拽插件(弹框拖拽)

// =======拖拽 插件 cnpm install vuedraggableimport draggable from 'vuedraggable' <draggable v-model="tags" :move="getdata" @update="datadragEnd"> <transition-group> <div class="testdiv" v-for="eleme

自己写一个jqery的拖拽插件

说实话,jQuery比原生的js好用多了,本来想用原生写的,也写出来的,只是,感觉不像插件,所以用jQuery实现了一版. 实现的功能:可以指定拖拽的边界,在拖拽过程中,可以触发几个自定义事件 先说明一下我写的插件的原则: 1.常量分离出来,放在$.zUI.插件中 2.插件的主体执行函数命名为$.zUI.插件.fn 3.销毁函数命名为$.zUI.插件.unfn 这些规范,主要是为了以后写其他插件时,放在一起,精简代码用的,以后可能还会增加其他规则,以写出一个骨架来. 拖拽的原理其实比较简单,就是

103 extend 插件入口 jquery eq 和get的封装 拖拽插件

//demo.js window.onload = function () { //个人中心 $().getClass("member").hover(function(){ $(this).css("background","url(images/arrow2.png) no-repeat 55px center"); $().getClass("member_ul").show(); },function(){ $().g

jQuery的DOM操作实例(2)——拖拽效果&amp;&amp;拓展插件

一.原生JavaScript编写拖拽效果 二.jQuery编写的拖拽效果 三.在jQuery中拓展一个拖拽插件

jquery插件之拖拽

该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现目前较为流行的拖拽效果,您可以根据自己的实际需求来设置被拖拽元素是否可以被拖拽至可视区域以外.整体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.d