html如何调整选项的显示顺序的插件

html如何调整选项的显示顺序的插件,第1张

如果你用过 jQuery UI,那么你应该会知道它内置有一个拖动排序(sortable)的功能。今天给大家推荐一个轻量级的拖动排序插件,让你能够摆脱 jQuery UI。

HTML5 Sortable 是一个简单易用的轻量级 jQuery 插件,它可让你轻松实现列表的拖动排序功能,它基于原生 HTML5 的拖动 API 而实现。更重要的一点是它支持包括 IE 在内的所有主流浏览器。

如何使用

请参考http://farhadi.ir/projects/html5sortable/

首先引入 jQuery 框架HTML5 Sortable 插件。

1、<script src="jquery.min.js"></script>

2、<script src="jquery.sortable.js"></script>

然后像这样添加一个 UL 列表,同时可以再加上自定义的样式。

<ul class="sortable"

<li>Item 1</li>

<li>Item 2</li>

<li>Item 3</li>

<li>Item 4</li>

</ul>

最后初始化 

//初始化

$('.sortable').sortable()

//绑定方法:当改变排序后执行

$('.sortable').sortable().bind('sortupdate', function() {//Triggered when the user stopped sorting and the DOM position has changed. })

//移除拖动排序功能

$('.sortable').sortable('destroy')

el-table实现拖拽排序效果:

    

首先我们需要引入import Sortable from "sortablejs"

const tbody = document.querySelector(

                //获取el-table中的 tbody 的dom

                ".el-table__body-wrapper tbody"

            )

            this.tableObject = Sortable.create(tbody, {

                onEnd: ({ newIndex, oldIndex }) =>{

                    // 获取当前节点的数据

                    let currRow = this.tableData.splice(oldIndex, 1)[0] //this.tableData是你el-table渲染的数据 注意是你自己的数据

                    // 替换到新节点上

                    this.tableData.splice(newIndex, 0, currRow)

                    let dirSortList = this.tableData.map((v) =>{

                        return v.id

                    })

                    this.liSort(dirSortList.join(",")) //this.liSort() 这个方法是我调用后端的接口 传当前排序好的id 此处换为你们自己的方法

                },

            })

以上就是我们实现拖拽排序的功能

我们将此组件用到项目中如果不是同时复用,不会出现问题的 如 :

//pub-table是我封装的一个拖拽功能的组件 命名看你们自己

                <pub-table

                    ref="first"

                    :classify="classify"

                    :table-data="tableData"

                    :org-id="orgId"

                    @search="search"

                ></pub-table>

我们在直接引用的时候并不会出现问题,但是如果我们在el-tabs中去多次引用就会出现问题

<el-tabs

            ref="tab"

            v-model="activeName"

            @tab-click="handleClick"

        >

            <el-tab-pane label="test1" name="1">

                <pub-table

                    v-if="activeName == 1"

                    ref="first"

                    :classify="classify"

                    :table-data="tableData"

                    :org-id="orgId"

                    @search="search"

                ></pub-table>

            </el-tab-pane>

            <el-tab-pane label="tets2" name="2">

                <pub-table

                    ref="second"

                    :classify="classify"

                    :org-id="orgId"

                    :table-data="tableData"

                    @search="search"

                ></pub-table>

            </el-tab-pane>

        </el-tabs>

这是我们发现我们在el-tabs中引入了两次排序组件 我们在使用的时候只有第一次引入的那个拖拽排序组件才可以使用

(具体原因还不清楚,盲猜应该和dom的加载有关系)

解决方案:

我们在每个组件上加一个 v-if 这样的话每次切换tabs的时候 组件都会重新加载 如:

      <pub-table

                    v-if="activeName == 1" // active为tabs绑定的data值 切换tabs的时候会绑定到 activeName上 会获取name值

                    ref="second"

                    :classify="classify"

                    :org-id="orgId"

                    :table-data="tableData"

                    @search="search"

                ></pub-table>

            </el-tab-pane>

这样一个完整的拖拽排序就完成了

第一阶段:

HTML+CSS:

HTML进阶、CSS进阶、div+css布局、HTML+css整站开发、

JavaScript基础:

Js基础教程、js内置对象常用方法、常见DOM树 *** 作大全、ECMAscript、DOM、BOM、定时器和焦点图。

JS基本特效:

常见特效、例如:tab、导航、整页滚动、轮播图、JS制作幻灯片、d出层、手风琴菜单、瀑布流布局、滚动事件、滚差视图。

JS高级特征:

正则表达式、排序算法、递归算法、闭包、函数节流、作用域链、基于距离运动框架、面向对象基础、

JQuery:基础使用

悬着器、DOM *** 作、特效和动画、方法链、拖拽、变形、JQueryUI组件基本使用。

第二阶段:

HTML5和移动Web开发

HTML5:

HTML5新语义标签、HTML5表单、音频和视频、离线和本地存储、SVG、WebSocket、Canvas.

CSS3:

CSS3新选择器、伪元素、脸色表示法、边框、阴影、background系列属性改变、Transition、动画、景深和深透、3D效果制作、Velocity.js框架、元素进场、出场策略、炫酷CSS3网页制作。

Bootstrap:

响应式概念、媒体查询、响应式网站制作、删格系统、删格系统原理、Bootstrap常用模板、LESS和SASS。

移动Web开发:

跨终端WEB和主流设备简介、视口、流式布局、d性盒子、rem、移动终端JavaScript事件、手机中常见JS效果制作、Zepto.js、手机聚划算页面、手机滚屏。

第三阶段:

HTTP服务和AJAX编程

WEB服务器基础:

服务器基础知识、Apache服务器和其他WEB服务器介绍、Apache服务器搭建、HTTP介绍。

PHP基础:

PHP基础语法、使用PHP处理简单的GET或者POST请求、

AJAX上篇:

Ajax简介和异步的概念、Ajax框架的封装、XMLHttpRequest对象详细介绍方法、兼容性处理方法、Ajax框架的封装、Ajax中缓存问题、XML介绍和使用。

AJAX下篇:

JSON和JSON解析、数据绑定和模板技术、JSONP、跨域技术、图片预读取和lazy-load技术、JQuery框架中的AjaxAPI、使用Ajax实现爆布流案例额。

第四阶段:

面向对象进阶

面向对象终极篇:

从内存角度到理解JS面向对象、基本类型、复杂类型、原型链、ES6中的面向对象、属性读写权限、设置器、访问器。

面向对象三大特征:

继承性、多态性、封装性、接口。

设计模式:

面向对象编程思维、单例模式、工厂模式、策略模式、观察者模式、模板方法模式、代理模式、装饰者模式、适配器模式、面向切面编程。

第五阶段:

封装一个属于自己的框架

框架封装基础:

事件流、冒泡、捕获、事件对象、事件框架、选择框架。

框架封装中级:

运动原理、单物体运动框架、多物体运动框架、运动框架面向对象封装。

框架封装高级和补充:

JQuery框架雏形、可扩展性、模块化、封装属于传智自己的框架。

第六阶段:

模块化组件开发

面向组件编程:

面向组件编程的方式、面向组件编程的实现原理、面向组件编程实战、基于组件化思想开发网站应用程序。

面向模块编程:

AMD设计规范、CMD设计规范、RequireJS,LoadJS、淘宝的SeaJS。

第七阶段:

主流的流行框架

Web开发工作流:

GIT/SVN、Yeoman脚手架、NPM/Bower依赖管理工具、Grunt/Gulp/Webpack。

MVC/MVVM/MVW框架:

Angular.js、Backbone.js、Knockout/Ember。

常用库:

React.js、Vue.js、Zepto.js。

第八阶段:

HTML5原生移动应用开发

Cordova:

WebApp/NativeApp/HybirdApp简介、Cordova简介、与PhoneGap之间的关系、开发环境搭建、Cordova实战(创建项目,配置,编译,调试,部署发布)。

Ionic:

Ionic简介和同类对比、模板项目解析、常见组件及使用、结合Angular构建APP、常见效果(下拉刷新,上拉加载,侧滑导航,选项卡)。

ReactNative:

ReactNative简介、ReactNative环境配置、创建项目,配置,编译,调试,部署发布、原生模块和UI组件、原生常用API。

HTML5+:

HTML5+中国产业联盟、HTML5PlusRuntime环境、HBuilder开发工具、MUI框架、H5+开发和部署。

第九阶段:

Node.js全栈开发:

快速入门:

Node.js发展、生态圈、Io.js、Linux/Windows/OSX环境配置、REPL环境和控制台程序、异步编程,非阻塞I/O、模块概念,模块管理工具、开发流程,调试,测试。

核心模块和对象:

全局对象global,process,console,util、事件驱动,事件发射器、加密解密,路径 *** 作,序列化和反序列化、文件流 *** 作、HTTP服务端与客户端、Socket.IO。

Web开发基础:

HTTP协议,请求响应处理过程、关系型数据库 *** 作和数据访问、非关系型数据库 *** 作和数据访问、原生的Node.js开发Web应用程序、Web开发工作流、Node.js开发Blog案例。

快速开发框架:

Express简介+MVC简介、Express常用API、Express路由模块、Jade/Ejs模板引擎、使用Express重构Blog案例、Koa等其他常见MVC框架。

Node.js开发电子商务实战:

需求与设计、账户模块注册登录、会员中心模块、前台展示模块、购物车,订单结算、在线客服即时通讯模块。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7597575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存