使用jQuery UI的draggable和droppable完成拖拽功能--介绍

第一部分--拖拽介绍

https://code.csdn.net/2013ossurvey中最后一个开源项目就是zTree,一方面是因为自己看到有项目中使用了zTree,而已大家表示还不错。另外一方面,自己需要实现一个zTree不支持的复杂逻辑的拖拽功能。总体来说,我要实现的是一个可以拖拽的树形列表。当然最新版zTree也支持多课树之间的数据交互。当然一般的企业开发或者web开发中,使用到2个或3个数就足够了。太多了树形结构对于用户来说,也非常复杂。个人推荐不是非常复杂的需求都可以考虑使用zTree,因为它的授权许可是MIT,你可以自由获取,修改和分发给他人。

zTree多棵树之间的数据交互实例demo:http://www.ztree.me/v3/demo.php#_308

clip_image001_thumb1

第二部分--功能需求。

1.父节点可以嵌套叶子节点,而已最好支持嵌套层数不显示,程序自动完成这个功能,或者在初始化的时候,开发人员传入一个指定的层级数目

2.父节点和叶子节点都可以拖动。说明:拖动父节点到右侧时,它包含的叶子节点都需要拖到右边

3.树形类表默认可以折叠,单击展开,再单击就折叠。

4.点击节点右侧的“删除”按钮可以删除列表里面的数据

大家参照上面的实例demo,可以看出我需要完成的功能。因为自己开始不知道有zTree这么成熟的控件,而已它确实不能完全满足我的需求,所以我需要从头开始完成这个功能。

项目中主要使用到jQuery UI里面的draggable和droppable,因为很多老的浏览器都不值html5的drag api。我自己也没有去查看zTree的源代码,所以也不知道zTree底层拖拽实现是否也是使用了jQuery UI的draggable和droppable方法。

同时因为zTree考虑到具体业务需求,对大数据处理时可以使用ajax方法,而我自己在实现,因为后台返回的数据是json格式,而且数据量不是非常的大,所以没有考虑着一块。

比较复杂的是,生成拖拽到右边列表的数据。zTree目前当然支持比较好的平行数据内容,而已在官方网站也说明,未来会加入保存数据的接口,或者通过form表单的形式发送到服务器。而我实际开发中,就是因为传入到后台的数据要求比较复杂,所以我就放弃了使用zTree控件。

完成最后的功能界面如下,完成通过拖拽数据到右边可以计算出符合条件的人数。

江西财经大学和“东华理工大学”是或的一个关系,而他们整体和”南昌航空大学“又是”且“的关系,当然也可以是”排除“关系。这里将实际项目简化了。点击江西高校,可以将下面所有的节点折叠起来。拖拽元素到右边,可以拖到一个单独的区域里面,也可以拖到一个已经存在节点的区域里面。就想上图中的关系。

点击确定需要把右边的树形结构数据保存下来。当然下次打开系统,必须通过反方法把右边的数据生成如图的结果。

第三部分--方案思路:

1.了解jQuery draggable和droppable方法和工作原理

2.递归思想

3.各个击破

4.熟练使用jQuery操作dom结构

第四部分--参考网址:

1.http://www.ztree.me/v3/main.php

2.http://jqueryui.com/draggable/

3.http://jqueryui.com/droppable/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 跨浏览器,可兼容IE7--IE10, FireFox, Chrome, Opera等几大内核的浏览器,且不需要浏览器再加装任何控件。  多系统兼容性、可移植性:由于只包括前台UI,因此二次开发者可很方便将本插件用在任何一种需要流程图的B/S系统应用上,流程图的详细实现逻辑完全交于后台程序开发者自己实现;对于后台,只要能返回/接收能被本插件解析的JSON格式数据即可.所以本插件可用于不同的服务器语言建立的后台上.  跨领域:流程图设计器不止用在电信领域,在其它需要IT进行技术支持的领域中都有重大作用.  以下从纯技术实现层面具体描述:  页面顶部栏、左边侧边栏均可自定义;  当左边的侧边栏设为不显示时,为只读状态,此时的视图区可当作是一个查看器而非编辑器。  侧边工具栏除了基本和一些流程节点按钮外,还自定义新的节点按钮,自定义节点都可以有自有的图标、类型名称,定义后在使用可可在工作区内增加这些自定义节点。  顶部栏可显示流程图数据组的标题,也可提供一些常用操作按钮。  顶部栏的按钮,除了撤销、重做按钮外,其余按钮均可自定义点击事件。  可画直线、折线;折线还可以左右/上下移动其中段。  具有区域划分功能,能让用户更直观地了解哪些节点及其相互间的转换,是属于何种自定义区域内的。  具有标注功能,用橙红色标注某个结点或者转换线,一般用在展示流程进度时。  能直接双击结点、连线、分组区域中的文字进行编辑  在对结点、连线、分组区域的各种编辑操作,如新增/删除/修改名称/重设样式或大小/移动/标注时,均可捕捉到事件,并触发自定义事件,如果自定义事件执行的方法返回FALSE,则会阻止操作。  具有操作事务序列控制功能,在工作区内的各种有效操作都能记录到一个栈中,然后可以进行撤销(undo())或重做(redo()),像典型的C/S软件一样。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值