摘要:基于的拖动排序插件代码地址核心代码由于有些浏览器的图片和链接是默认可以拖动的,所以屏蔽掉的事件只允许鼠标左键拖动禁止在表单元素里面拖动滚动条的位置向上排序向下排序用法水平有限,欢迎提出宝贵意见一起交流学习
基于jQuery的拖动排序插件
代码地址:https://github.com/ylb1992/dr...
核心代码:
(function($) { "use strict"; $.fn.dragSort = function(options) { var settings = $.extend(true, { targetEle: "li", replaceStyle: { "background-color": "#f9f9f9", "border": "1px dashed #ffffd" }, dragStyle: { "position": "fixed", "box-shadow": "10px 10px 20px 0 #eee" } }, options); return this.each(function() { // 由于有些浏览器的图片和链接是默认可以拖动的,所以屏蔽掉document的dragstart事件 document.ondragstart = function() { return false; } var thisEle = $(this); thisEle.on("mousedown.dragSort", settings.targetEle, function(event) { var selfEle = $(this); // 只允许鼠标左键拖动 if(event.which !== 1) { return; } // 禁止在表单元素里面拖动 var tagName = event.target.tagName.toUpperCase(); if(tagName === "INPUT" || tagName === "TEXTAREA" || tagName === "SELECT") { return; } var moveEle = $(this); var offset = selfEle.offset(); var rangeX = event.pageX - offset.left; var rangeY = event.pageY - offset.top; var replaceEle = selfEle.clone() .css("height", selfEle.outerHeight()) .css(settings.replaceStyle) .empty(); settings.dragStyle.width = selfEle.width(); var move = true; $(document).on("mousemove.dragSort", function(event) { if (move) { moveEle.before(replaceEle).css(settings.dragStyle).appendTo(moveEle.parent()); move = false; } var thisOuterHeight = moveEle.outerHeight(); // 滚动条的位置 var scrollTop = $(document).scrollTop(); var scrollLeft = $(document).scrollLeft(); var moveLeft = event.pageX - rangeX - scrollLeft; var moveTop = event.pageY - rangeY - scrollTop; var prevEle = replaceEle.prev(); var nextEle = replaceEle.next().not(moveEle); moveEle.css({ left: moveLeft, top: moveTop }); // 向上排序 if (prevEle.length > 0 && moveTop + scrollTop < prevEle.offset().top + prevEle.outerHeight() / 2) { replaceEle.after(prevEle); //向下排序 } else if (nextEle.length > 0 && moveTop + scrollTop > nextEle.offset().top - nextEle.outerHeight() / 2) { replaceEle.before(nextEle); } }); $(document).on("mouseup.dragSort", function(event) { $(document).off("mousemove.dragSort mouseup.dragSort") if (!move) { replaceEle.before(moveEle.removeAttr("style")).remove(); } }); }); }); }; })(jQuery)
用法:
$("#wrap").dragSort();
水平有限,欢迎提出宝贵意见一起交流学习
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/83239.html
摘要:最近要做拖拽相关的功能,本来想自己写,忽然想起来之前在轮子工厂有更新过,还是很好用滴。介绍一款可任意拖动排序的插件。支持桌面和移动端,拖拽过渡动画美观。 最近要做拖拽相关的功能,本来想自己写,忽然想起来之前在轮子工厂有更新过,vue-dragging还是很好用滴。 介绍 vue-dragging -- 一款可任意拖动排序的vue插件。支持桌面和移动端,拖拽过渡动画美观。支持vue1和v...
摘要:插件美化实现拖拽排序,保持序号不变,但真实排序保持变化。代码说明为自定义请求,定义了数据接收处理和发送给后台方法。里面有具体处理数据的样式以及处理发送数据保存到数据库的小。其他文件顺序加载就好。 php+ajax+dragsort插件+bootstrap美化实现拖拽排序,保持序号不变,但真实排序保持变化。showImg(https://segmentfault.com/img/bVqK...
摘要:介绍是一款轻量级的拖放排序列表的插件虽然体积小,但是功能很强大下载地址官方特点支持触屏设备和大部分浏览器以下的就不支持了,原因都懂得可以从一个列表容器中拖拽一个列表单元到其他容器或本列表容器中进行排序移动列表单元时有动画支持拖放操作和可选择 介绍 Sortable.js是一款轻量级的拖放排序列表的js插件(虽然体积小,但是功能很强大)下载地址:https://github.com/Ru...
阅读 1901·2021-11-22 09:34
阅读 3040·2021-09-28 09:35
阅读 13493·2021-09-09 11:34
阅读 3608·2019-08-29 16:25
阅读 2838·2019-08-29 15:23
阅读 2050·2019-08-28 17:55
阅读 2438·2019-08-26 17:04
阅读 3055·2019-08-26 12:21