jQuery MiniUI

 找回密码
 立即注册
查看: 10773|回复: 10
打印 上一主题 下一主题

mini-tree可否只允许拖动子节点 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2013-5-28 16:22:54 |只看该作者 |倒序浏览
我参考示例http://www.miniui.com/demo/tree/between.html
1.想实现左边的tree只允许拖动子节点,即叶子节点到右边?
2.能否将左边的拖到右边之后,左边的保持不动,而不是消失呢?
3.另外都不知道它拖动的过程是怎么执行的?看不到js啊,比如说右边已经存在了,再拖过去就会提示已存在,这样就不会重复了

Rank: 8Rank: 8

沙发
发表于 2013-5-28 16:29:23 |只看该作者
1.监听onbeforedrop 判断你拖动的是否是子节点,如果是e.cancel = true 就是取消投放
2.左右移动拖拽会自动清除投放的节点。如果需要不清楚,你可以自己用按钮做,获得选中节点,在右侧树中增加左侧树选中的节点即可
3.是否重复也是,tree.cascadeChild()方法遍历所有子节点,或者eachChild()只遍历某一父节点的下一级子节点,然后判断是否已经存在,存在了就不执行addNode()方法

Rank: 8Rank: 8

板凳
发表于 2013-5-28 17:03:43 |只看该作者
gong_cnwh 发表于 2013-5-28 17:02
没有啥办法将removeNode方法在拖拽时设置为false之类的,这样就不会清除了

这个还没有额

Rank: 2

地板
发表于 2013-5-28 17:10:18 |只看该作者
factory 发表于 2013-5-28 16:29
1.监听onbeforedrop 判断你拖动的是否是子节点,如果是e.cancel = true 就是取消投放
2.左右移动拖拽会自动 ...

能否遍历同一级的所有节点啊,当然是在同一父节点下的
因为拖拽过去可能直接加载到同一级,需要判断同一级中是否已存在。
不适用cascadeChild因为在不同父节点下是可以重复的。

Rank: 8Rank: 8

5#
发表于 2013-5-28 17:13:56 |只看该作者
gong_cnwh 发表于 2013-5-28 17:10
能否遍历同一级的所有节点啊,当然是在同一父节点下的
因为拖拽过去可能直接加载到同一级,需要判断同一 ...

eachChild()只遍历下一级的子节点

Rank: 2

6#
发表于 2013-5-28 17:18:04 |只看该作者
factory 发表于 2013-5-28 17:13
eachChild()只遍历下一级的子节点

嗯,再请教一个问题,怎么判断它是否是叶子节点啊,我IE下F12调试有时候都看不到isLeaf这个属性的。
所以我是自己定义某一个属性判断它是否是叶子节点的,
但是刚拖拽过去的节点并没有这个属性额

Rank: 8Rank: 8

7#
发表于 2013-5-28 17:27:27 |只看该作者
gong_cnwh 发表于 2013-5-28 17:18
嗯,再请教一个问题,怎么判断它是否是叶子节点啊,我IE下F12调试有时候都看不到isLeaf这个属性的。
所以 ...

tree.isLeaf(node)

Rank: 8Rank: 8

8#
发表于 2013-5-29 09:46:19 |只看该作者
gong_cnwh 发表于 2013-5-28 17:54
非常感谢你的耐心解答!
再问一个比较弱智的问题。。
我需要做的就是遍历节点,然后判断拖拽过来的节 ...

node是父节点,fn 是你的处理方法

tree.eachChild(pnode,function(node){
      if(node.id == "1"){
           alert(id为1的子节点)
       }
})

Rank: 8Rank: 8

9#
发表于 2013-5-29 09:46:21 |只看该作者
gong_cnwh 发表于 2013-5-28 17:54
非常感谢你的耐心解答!
再问一个比较弱智的问题。。
我需要做的就是遍历节点,然后判断拖拽过来的节 ...

node是父节点,fn 是你的处理方法

tree.eachChild(pnode,function(node){
      if(node.id == "1"){
           alert(id为1的子节点)
       }
})

Rank: 2

10#
发表于 2013-5-29 09:58:52 |只看该作者
本帖最后由 gong_cnwh 于 2013-5-29 10:22 编辑
factory 发表于 2013-5-29 09:46
node是父节点,fn 是你的处理方法

tree.eachChild(pnode,function(node){

额,了解了,不过我换了一种方式。
1.我看到API中有拖拽事件beforedrop,能否改变dragAction,我写e.dragAction = "add";貌似没起到作用
因为我只想让拖过去的节点存在于子节点中,不能为第一级,
因为我发现目标节点如果是根节点,拖过去的好像就和它同级,也成为根节点了,但是我想的效果是成为它的子节点啊。
本想通过e.dragAction = "add";这句话改变,好像没效果啊。
2.还有,拖拽的过程中显示的是Nodes1,不知道它是读取的什么,能否改变它为正在投放的节点信息

Archiver|普加软件

GMT+8, 2025-7-6 21:47 , Processed in 1.055066 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部