拖拽已经折磨我好几天
虽然头已经把拖拽闹完了
可是从他手里接到活的时候
是写死的
而且
不能保存值
经过前面几天的思索 发现走错了路
头突然的一句话点醒了我
最后确定的思路是
先说下设计的数据库吧
url 链接 通过来链接吧内容显示到div中
xuhao 序号 这个值是变化的根据他的顺序来在页面显示拖拽后的div的位置
divId div的id 这个值从添加以后到删除都不会变
lr 位置 左边l 右边r
先不说添加
首先说一下显示
查询左边显示的数据 根据lr添加条件 xuhao排序
查询右边显示的数据 根据lr添加条件 xuhao排序
String hqlL="from Home where lr='l' order by xuhao";//编写hql语句
homeListL=homeService.findHomeHql(hqlL);//页面中左边显示的数据
String hqlR="from Home where lr='r' order by xuhao";//编写hql语句
homeListR=homeService.findHomeHql(hqlR);//页面中右边显示的数据
那么查询就差完了
该到页面去看看如何显示并且将显示的数据在div中显示了
循环生成div 并且通过divid的值给他的链接赋值
<div id="column1" class="column">
<s:iterator value="homeListL">
<div class="widget" id="${divId}"></div>
<script>
$("#${divId}").load("${url}",null,function(response){
$("#${divId}").html(response);
});
</script>
</s:iterator>
</div>
<div id="column2" class="column">
<s:iterator value="homeListR">
<div class="widget" id="${divId}"></div>
<script>
$("#${divId}").load("${url}",null,function(response){
$("#${divId}").html(response);
});
</script>
</s:iterator>
</div>
下面来看看拖动的代码所在
<script>
var outerLayout;
$(document).ready( function() {
outerLayout = $("body").layout();
$(".column").sortable({
connectWith: $(".column")
, placeholder: 'widget-placeholder'
, cursor: 'move'
, helper: function (evt, ui) { return $(ui).clone().appendTo('body').show(); }
, over: function (evt, ui) {
var
$target_UL = $(ui.placeholder).parent()
, targetWidth = $target_UL.width()
, helperWidth = ui.helper.width()
, padding = parseInt( ui.helper.css('paddingLeft') )
+ parseInt( ui.helper.css('paddingRight') )
+ parseInt( ui.helper.css('borderLeftWidth') )
+ parseInt( ui.helper.css('borderRightWidth') )
;
ui.helper.height('auto').width( targetWidth - padding );
}
, stop:saveLayout
});
});
function saveLayout() {//拖拽以后会触发这个方法
var col1= $("#column1").sortable("toArray");
var col2= $("#column2").sortable("toArray");
var col=col1+";"+col2;
location.href="sys/updateHomeDivID.action?col="+col;
}
</script>
看看我们的修改如何闹
首先将拖动后的div顺序传了过来
根据分号分隔值,这样就得到了左边的div和右边的div
a1代表左边的div的id a2代表右边的div的id
String [] a=null;
if(col!=null && !"".equals(col)){
a=col.split(";");
}
String a1 []=null;
String a2 []=null;
if(a[0]!=null && !"".equals(a[0])){
a1 =a[0].split(",");
}
if(a[1]!=null && !"".equals(a[1])){
a2 =a[1].split(",");
}
获取根据usercode获取数据
homeList=homeService.findHome(user.getUserCode());
循环homeList你想要什么啊 我当然是要通过匹配divid的值来给其赋值值
div的值是不变的 但是xuhao 和 lr是变化的啊
从左边拖到右边 lr的变化从l变到r xuhao的变化
从上边拖到下边 lr的没变化 xuhao的变化
循环homeList 如果homeList中有和a1中匹配的divid的话 立马修改位置 修改xuhao 修改lr
xuhao每次拖拽更新时 都是重新定制的
for(int i=0;i<homeList.size();i++){
Home h=(Home)homeList.get(i);
if(a1!=null && a1.length!=0){
for(int j=0;j<a1.length;j++){
if(h.getDivId().equals(a1[j])){
h.setLr("l");
h.setXuhao("l"+j);
}
}
}
if(a2!=null && a2.length!=0){
for(int j=0;j<a2.length;j++){
if(h.getDivId().equals(a2[j])){
h.setLr("r");
h.setXuhao("r"+j);
}
}
}
homeService.updateHome(h);//修改
}
好了现在拖拽后你的位置就可以保存了
既然这样好了
那是不是还少个一个添加链接的地方呢
是不是还少个能根据页面div布局自动识别新添加的div放哪里呢
首先的定义下div有多少个id 我这里只有十个
想有多少有多少,但是divid一定是要有规律的
定义所有div只能拥有以下id
Home homes;
//*****setter getter****//
String [] shuzu={"w1","w2","w3","w4","w5","w6","w7","w8","w9","w10"};
可是问题又出现了 我不知道这里面哪个能用 因为divid是不可以重复的
所以就要和数据库中已经存在的divid做个比较 把能用的拿出来
homeList=homeService.findHome(user.getUserCode());//获取数据库数据
这个比较方式是我从网上摘的 感觉很省力
先把数据库divid拼成字符串
字符串去和shuzu这个divid比较全的数组比较 检索不到的就是还能用的
String str ="";
List shuzuList=new ArrayList();//能用的divid
for(int j=0;j<homeList.size();j++){
str+=homeList.get(j).getDivId();
}
for(int i=0;i<shuzu.length;i++){
if(str.indexOf(shuzu[i])==-1){
shuzuList.add(shuzu[i]);
}
}
将第一个能用的使用 因为我的shuzu这个数组顺序都是排列好的
homes.setDivId(shuzuList.get(0).toString());
接下来 我们的divid已经解决掉了 是该解决xuhao lr的问题了
刚开始我是用所有的数据的size来判断新添加的数据该放在哪
奇数放右边 偶数放左边
后来问题出现了
数据有8条
左边5条 右边3条
数据是个偶数 应该放在左边的 但是左边已经有5条了 右边只有3条了
这样看起来不是很好
只能重新考虑思想
根据比较左边数据和右边数据的大小来决定新来的数据放在哪里
如果左边数据多的话 那么应该放在右边了
相等的话 放在左边好了
如果左边少的话 放在左边好了
这样lr就这样定好了
但是xuhao不好闹了
我的序号是这样闹的 l0 l1 l2 l3 r0 r1 r2 r3
只能是这里面最大的xuhao 找第二位分离出来加1 在拼装
String hqll="from Home where lr='l' order by xuhao";//根据lr=l 序号排序查询值
List<Home> l=homeService.findHomeHql(hqll);
String hqlr="from Home where lr='r' order by xuhao";//根据lr=r 序号排序查询值
List<Home> r=homeService.findHomeHql(hqlr);
if(null!=homeList &&homeList.size()>0){
//决定添加数据的位置
if(l.size()>r.size()){//左边数据多 数据方在右边
homes.setLr("r");//
String r1=r.get(r.size()-1).getXuhao().substring(1, 2);
homes.setXuhao("r"+(Integer.parseInt(r1)+1));
}else if(l.size()==r.size()){//数据一样多 //数据放在左边
homes.setLr("l");
String l1=l.get(l.size()-1).getXuhao().substring(1, 2);
homes.setXuhao("l"+(Integer.parseInt(l1)+1));
}else{//数据放在左边
homes.setLr("l");
String l1=l.get(l.size()-1).getXuhao().substring(1, 2);
homes.setXuhao("l"+(Integer.parseInt(l1)+1));
}
}
homes.setUserCode(user.getUserCode());
f=homeService.addHome(homes);
ok 这样就添加进入了
添加的时候制定好divid的值 我们以后就不需要为divid而烦心了
只需要关心在左边还是在右边 左边是如何排序的 ,右边又是如何排序的
这样我们就轻松多了 就和我那朋友说的 一静一动
分享到:
相关推荐
本篇文章将深入探讨如何使用 jQuery Sortable 实现div的拖动排序效果。 首先,你需要在项目中引入 jQuery 和 jQuery UI 的库。jQuery 是一个广泛使用的JavaScript库,而 jQuery UI 提供了包括Sortable在内的多种...
在给定的标题“jquery拖拽排序插件div自由拖动排序代码”中,我们主要讨论的是如何利用jQuery实现一个功能,让用户能够自由地通过拖放操作来对页面上的div元素进行排序。这种功能在许多应用场景中都非常实用,比如...
本教程将详细讲解如何利用jQuery实现一个div元素的拖动排序效果,结合CSS样式,创建出一款从左到右慢慢展开且可自由拖动排序的特效。 首先,我们需要在HTML中设置好基础结构。创建一系列的div元素,每个div代表一个...
通过以上步骤,我们就成功实现了jQuery鼠标上下拖动div排序的功能,同时也添加了按钮操作的提示效果。这个例子展示了jQuery在增强网页交互性方面的强大能力,结合其他库,我们可以创建更加丰富和灵活的用户界面。在...
4. **CSS样式**: 为了提高用户体验,通常需要为可拖动的div和可放置的区域添加适当的CSS样式,以突出其状态,如悬停时的边框颜色变化。 5. **资源引用**: 文件`index.html`应该包含对jQuery、jQuery UI库以及相关...
本项目“jQuery可拖拽DIV页面”利用jQuery及其扩展插件jQuery UI,实现了一个用户界面元素(如div)可以被拖动的功能,从而为用户提供更直观的交互体验。以下是对这个知识点的详细讲解: 1. **jQuery基础**:jQuery...
在这个项目中,jQuery被用来添加拖动功能到div元素,使得用户可以通过鼠标操作来移动这些元素。 2. **自定义div拖动**:此插件的核心功能是让开发者能够选择任何div元素,并赋予它们拖动的能力。这意味着开发者可以...
本教程将深入探讨如何利用jQuery UI库中的Draggable功能来实现div元素的拖动,以及如何通过append方法动态添加元素。首先,我们需要了解jQuery UI库的基本用法。 **jQuery UI Draggable组件** jQuery UI的Draggable...
通过鼠标拖动来改变div的顺序,来实现指标的排序。使用了Jquery,jquery-ui.js,sortable,自己原创,效果很绚。 配合ThinkPHP可以实现把数据入库,由于使用的是ubuntu, 文件编码格式都是utf-8.
这样,我们就实现了一个基本的jQuery拖拽功能。然而,为了提高用户体验,还可以添加一些额外的功能,例如限制div的拖动范围、防止穿透其他元素(z-index)以及处理边界反弹等。 在实际项目中,可能还会涉及到性能...
可拖动div边框改变大小的方法,jquery拖拽改变div大小效果,。。。。。。。。。。。。。。。。。。。。。。。。。
本篇文章将深入讲解如何使用jQuery UI Drag插件来创建可拖动的浮动div,并将其应用于布局排列,以及如何将排序结果保存到数据库。 **1. jQuery UI Drag插件介绍** jQuery UI是基于jQuery库的一个扩展,它提供了...
在网页开发中,动态交互效果往往能提升用户体验,其中,拖拽功能(Drag and Drop)是一种常见的用户交互设计。JQuery作为一个轻量级、高性能的JavaScript库,为开发者提供了便捷的方式来实现这一功能。本篇文章将深入...
标题 "Asp.net+JQuery拖拽布局并保存至数据库" 涉及的技术领域主要集中在Web开发,尤其是客户端交互和后端数据处理。这里我们将深入探讨如何利用JQuery实现拖拽布局,以及如何将这种布局信息存储到Asp.net应用程序的...
在本文中,我们将深入探讨如何使用jQuery实现一个可拖动且可编辑的div元素,包括关闭功能和颜色变换。jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理和动画效果,使得创建交互式Web应用变得更为简单。 ...
在JavaScript的世界里,jQuery...在提供的`drag`文件中,可能包含了实现上述拖拽效果的示例代码或进一步的扩展,如添加缓动效果、限制拖动方向等。通过学习和实践这些代码,你可以更好地掌握jQuery实现拖拽功能的技巧。
标题中的“基于bootstrap和jquery的可拖拽移动div,可预览的页面生成器”指的是一个Web开发工具,它利用Bootstrap框架和jQuery库构建,允许用户通过拖拽和放置的方式设计网页布局,并实时预览编辑效果。Bootstrap是...
以上就是关于“jQuery弹出div层窗口、div屏幕居中、背景滤镜效果和div拖拽效果”的核心知识点。通过熟练掌握这些技巧,开发者可以创建更富有互动性和用户体验的网页应用。在实际开发中,还需要根据不同的项目需求,...
拖拽(Draggable)功能是jQuery UI模块中的一个重要部分,它允许用户通过鼠标拖动元素来实现交互效果,如图片、div等。本篇文章将深入探讨如何使用jQuery实现图片和div的拖拽功能。 首先,你需要在项目中引入jQuery...