摘要:基于的拖動排序插件代碼地址核心代碼由于有些瀏覽器的圖片和鏈接是默認可以拖動的,所以屏蔽掉的事件只允許鼠標左鍵拖動禁止在表單元素里面拖動滾動條的位置向上排序向下排序用法水平有限,歡迎提出寶貴意見一起交流學(xué)習(xí)
基于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();
水平有限,歡迎提出寶貴意見一起交流學(xué)習(xí)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/83239.html
摘要:最近要做拖拽相關(guān)的功能,本來想自己寫,忽然想起來之前在輪子工廠有更新過,還是很好用滴。介紹一款可任意拖動排序的插件。支持桌面和移動端,拖拽過渡動畫美觀。 最近要做拖拽相關(guān)的功能,本來想自己寫,忽然想起來之前在輪子工廠有更新過,vue-dragging還是很好用滴。 介紹 vue-dragging -- 一款可任意拖動排序的vue插件。支持桌面和移動端,拖拽過渡動畫美觀。支持vue1和v...
摘要:插件美化實現(xiàn)拖拽排序,保持序號不變,但真實排序保持變化。代碼說明為自定義請求,定義了數(shù)據(jù)接收處理和發(fā)送給后臺方法。里面有具體處理數(shù)據(jù)的樣式以及處理發(fā)送數(shù)據(jù)保存到數(shù)據(jù)庫的小。其他文件順序加載就好。 php+ajax+dragsort插件+bootstrap美化實現(xiàn)拖拽排序,保持序號不變,但真實排序保持變化。showImg(https://segmentfault.com/img/bVqK...
摘要:介紹是一款輕量級的拖放排序列表的插件雖然體積小,但是功能很強大下載地址官方特點支持觸屏設(shè)備和大部分瀏覽器以下的就不支持了,原因都懂得可以從一個列表容器中拖拽一個列表單元到其他容器或本列表容器中進行排序移動列表單元時有動畫支持拖放操作和可選擇 介紹 Sortable.js是一款輕量級的拖放排序列表的js插件(雖然體積小,但是功能很強大)下載地址:https://github.com/Ru...
閱讀 1883·2021-11-22 09:34
閱讀 3010·2021-09-28 09:35
閱讀 13375·2021-09-09 11:34
閱讀 3594·2019-08-29 16:25
閱讀 2820·2019-08-29 15:23
閱讀 2035·2019-08-28 17:55
閱讀 2424·2019-08-26 17:04
閱讀 3044·2019-08-26 12:21