; RoadUI.DragSort = function (elements) { var container = elements; $(container).children().off("mousedown").mousedown(function (e) { if (e.which != 1 || $(e.target).is("input, textarea") || window.dragsort_only) return; e.preventDefault(); var x = e.pageX; var y = e.pageY; var _this = $(this); var w = _this.width(); var h = _this.height(); var w2 = w / 2; var h2 = h / 2; var p = _this.offset(); var left = p.left; var top = p.top; window.dragsort_only = true; // 添加虚线框 _this.before('
'); var wid = $("#roadui_dragsort_dasheddiv"); wid.css({ "border": "1px dashed #e8e8e8", "height": h + 2, "width": w, "padding": "4px 0 0 10px", "margin": "5px 0", "list-style": "none" }); _this.css({ "width": w, "height": h, "position": "absolute", "opacity": 0.8, "z-index": 999, "left": left, "top": top }); $(document).mousemove(function (e) { e.preventDefault(); // 移动选中块 var l = left + e.pageX - x; var t = top + e.pageY - y; _this.css({ "left": l, "top": t }); var ml = l + w2; var mt = t + h2; $(container).children().not(_this).not(wid).each(function (i) { var obj = $(this); var p = obj.offset(); var a1 = p.left; var a2 = p.left + obj.width(); var a3 = p.top; var a4 = p.top + obj.height(); if (a1 < ml && ml < a2 && a3 < mt && mt < a4) { if (!obj.next("#roadui_dragsort_dasheddiv").length) { wid.insertAfter(this); } else { wid.insertBefore(this); } return; } }); }); $(document).mouseup(function () { $(document).off('mouseup').off('mousemove'); $(container).each(function () { var obj = $(this).children(); var len = obj.length; if (len == 1 && obj.is(_this)) { $("
").appendTo(this).attr("class", "roadui_dragsort_block").css({ "height": 100 }); } else if (len == 2 && obj.is(".roadui_dragsort_block")) { $(this).children(".roadui_dragsort_block").remove(); } }); var p = wid.offset(); _this.animate({ "left": p.left, "top": p.top }, 100, function () { _this.removeAttr("style"); wid.replaceWith(_this); window.dragsort_only = null; }); }); }); }