jquery2014-09-28 23:22:46 29808
Jquery Div自由拖动排序,兼容性:IE7以上以及其他主流浏览器(Chrome,FireFox,Safari...)。排序是采用2个Div模块(源模块和目标模块)位置对调。其他位置不变。
拖动的时候保存当前的Div模块的位置。
主要核心就是在拖动目标元素时,检测当前的鼠标指针是否移入了除目标元素之外的其他DIV模块中,如果有,就可以作为交换位置事件开始。
更新保存的Div模块位置,以备下一次轮换时需要。
主要原理就这么多,这种直接交互2个模块位置的难度不大。
Jq代码:
var SortDivHandler = { CurrentLocationX: 0, CurrentLocationY: 0, CurrentSortFlag: 0, CurrentSortDiv: null, CurrentSortMove: 0, Initialize: function() { var isStart = false; var sortItemCount = parseInt(($("#SortContaint").width() - 90) / 300); for (var i = 0; i < $(".SortItem").length; i ) { var floorCount = Math.ceil((i 1) / sortItemCount); $($(".SortItem")[i]).attr("id", i); $($(".SortItem")[i]).html(i 1); if ((i 1) 3) { var itemIndex = (i) % 3; $($(".SortItem")[i]).animate({ left: 30 itemIndex * 200 (itemIndex - 1) * 30 "px", top: (floorCount - 1) * 120 30 * (floorCount - 1) 30 }, 300 i * 100); } } var isDrag = true; $(".SortItem").mousedown(function(e) { var SortTarget = $(this); SortDivHandler.CurrentSortMove = 0; SortDivHandler.CurrentSortDiv = $(this); isDrag = true; $(".SortItem").css("z-index", 1); SortDivHandler.CurrentSortDiv.css("z-index", -1).css("opacity", 0.8); SortDivHandler.CurrentLocationX = SortTarget.offset().left; SortDivHandler.CurrentLocationY = SortTarget.offset().top; SortTarget.attr("drag", 1); SortTarget.css("position", "absolute"); SortTarget.css("cursor", "default"); var currentTarget = SortTarget; var currentDisX = e.pageX - $(this).offset().left; var currentDisY = e.pageY - $(this).offset().top; $(document).mousemove(function(event) { if ($(currentTarget).attr("drag") == 0 || SortDivHandler.CurrentSortMove == 1) return; var currentX = event.clientX; var currentY = event.clientY; var cursorX = event.pageX - currentDisX; // $(this).offset().left; var cursorY = event.pageY - currentDisY; //-$(this).offset().top; // $(currentTarget) $(currentTarget).css("top", cursorY - 8 "px").css("left", cursorX - 30 "px"); isStart = true; }); $(document).mouseup(function() { // if(isDrag==false)return; $(currentTarget).attr("drag", 0); }); }); $(".SortItem").mousemove(function() { if (isStart == false) return; if (SortDivHandler.CurrentSortFlag == 0) { if ($(this).attr("id") == SortDivHandler.CurrentSortDiv.attr("id")) { return; } else { if (SortDivHandler.CurrentSortMove == 1) return; SortDivHandler.CurrentSortMove = 1; var targetX = $(this).offset().left; var targetY = $(this).offset().top; SortDivHandler.CurrentSortDiv.stop(true).animate({ left: targetX - 30 "px", top: targetY - 8 "px" }, 500, function() { $(this).css("opacity", 1); }); $(this).stop(true).animate({ left: SortDivHandler.CurrentLocationX - 30 "px", top: SortDivHandler.CurrentLocationY - 8 "px" }, 300, function() {}); isDrag = false; } } }); $(".SortItem").mouseup(function() { if (isDrag == false) return; SortDivHandler.CurrentSortMove = 1; SortDivHandler.CurrentSortDiv.stop(true).animate({ left: SortDivHandler.CurrentLocationX - 30 "px", top: SortDivHandler.CurrentLocationY - 8 "px" }, 500, function() { SortDivHandler.CurrentSortDiv.css("z-index", -1).css("opacity", 1); }); }); } }
彭亚欧个人博客原创文章,转载请注明出处
文章关键词:Jquery Div自由拖动排序,JqueryDiv排序,Jquery拖动,排序
文章固定链接:https://www.pengyaou.com/legendsz/front/codejq/NDA=.html
上一篇 JqueryTag编辑,选择标签