| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- ; 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('<div id="roadui_dragsort_dasheddiv"></div>');
- 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))
- {
- $("<div></div>").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;
- });
- });
- });
- }
|