jQuery MiniUI

标题: 请问tree的"nodecheck"和"nodeselect"事件 [打印本页]

作者: zxloveapple    时间: 2016-12-12 18:14:49     标题: 请问tree的"nodecheck"和"nodeselect"事件

tree是懒加载的:(设置的属性有:showcheckbox="true"  checkrecursive="true"  allowSelect="true")
var url = "@Url.Action("AA")?id=0&aaId=" + aaId;
        tree.setUrl(url);  


绑定了"nodecheck"
    tree.on("nodecheck", function (e) {      
        mini.alert(e.node.Id);
    });
和"nodeselect"事件
    tree.on("nodeselect", function (e) {
        var node = e.node;
        var sender = e.sender;
        sender.checkNode(node);
    });

问题:
1.直接点击checkbox会触发"nodecheck"事件,但是checkbox不会选中?
[attach]8515[/attach]
2.选中节点会触发"nodeselect"事件,也会选中checkbox,但是不会触发"nodecheck"事件?

作者: felt    时间: 2016-12-12 22:09:52

js选中都不会触发事件
作者: zxloveapple    时间: 2016-12-13 08:52:35

felt 发表于 2016-12-12 22:09
js选中都不会触发事件

那么第一个问题呢
作者: felt    时间: 2016-12-13 09:55:20

zxloveapple 发表于 2016-12-13 08:52
那么第一个问题呢

点击 checkbox默认是可以选中节点的复选框的
不清楚你做了什么处理
http://www.miniui.com/demo/#src=tree/functiontree.html
随便看一下有checkbox的示例,点击就是勾选
作者: zxloveapple    时间: 2016-12-13 10:16:39

felt 发表于 2016-12-13 09:55
点击 checkbox默认是可以选中节点的复选框的
不清楚你做了什么处理
http://www.miniui.com/demo/#src=tre ...

第一个问题,在你们示例上面试过了,唯一的区别是你们的树不是懒加载的。
第二个问题,js是可以触发选中事件的,这个在你们的示例上面试过了.怀疑是树的懒加载造成节点的某些数据并没有更新好,而且nodecheck和nodeselect事件也会相互影响
作者: felt    时间: 2016-12-13 11:40:37

zxloveapple 发表于 2016-12-13 10:16
第一个问题,在你们示例上面试过了,唯一的区别是你们的树不是懒加载的。
第二个问题,js是可以触发选中 ...

1 懒加载的树也是可以的
2 select和check是两回事,check是复选框的选中,select是节点包裹的一层边框和背景色
这两个事件没关联
http://www.miniui.com/demo/#src=tree/lazytree.html
这是我们懒加载树的示例,你可以基于我们示例修改测试,如果有问题,请修改成能重现你这问题的场景,上传html
作者: zxloveapple    时间: 2016-12-13 12:52:43

felt 发表于 2016-12-13 11:40
1 懒加载的树也是可以的
2 select和check是两回事,check是复选框的选中,select是节点包裹的一层边框和 ...

[attach]8521[/attach]
只有在第一次点击复选框的时候会出现,以后就可以选中了。
[attach]8522[/attach]

作者: felt    时间: 2016-12-13 13:12:18

本帖最后由 felt 于 2016-12-13 13:35 编辑
zxloveapple 发表于 2016-12-13 12:52
只有在第一次点击复选框的时候会出现,以后就可以选中了。

请提供懒加载这个页面修改后的代码
作者: zxloveapple    时间: 2016-12-13 13:33:34

felt 发表于 2016-12-13 13:12
请提供懒加载这个页面修复后的代码

<body>    <h1>LazyTree 懒加载树形</h1>              <input type="button" value="刷新节点" onclick="refreshNode()"/><ul id="tree1" class="mini-tree"  style="width:300px;height:200px;padding:5px;"     showTreeIcon="true" textField="name"     idField="id" parentField="pid" resultAsTree="false" showCheckBox="true" allowSelect="true" checkRecursive="true"        >        </ul>         <script type="text/javascript">    mini.parse();      var tree=mini.get("tree1");      var url="../data/TreeService.aspx?method=LoadNodes";      tree.setUrl(url);              tree.on("nodecheck",function(e){        var node=e.node;        mini.alert(node.id);      });             tree.on("nodeselect",function(e){        var node=e.node;         var sender=e.sender;         sender.checkNode(node);      });     function refreshNode() {        var tree = mini.get("tree1");        var node = tree.getSelectedNode();        if (node) {            tree.loadNode(node);        }    }     </script>

什么修复后的代码?我只是在你们的例子上改了下

作者: felt    时间: 2016-12-13 14:10:11

zxloveapple 发表于 2016-12-13 13:33
LazyTree 懒加载树形                                   mini.parse();      var tree=mini.get("tr ...

你监听了2个事件nodecheck和nodeselect,第一次点击checkbox,先触发的是nodeselect事件,复选框选中了,然后执行了点击复选框的的默认行为,选中再点击,就是取消选中。
作者: zxloveapple    时间: 2016-12-13 14:18:34

felt 发表于 2016-12-13 14:10
你监听了2个事件nodecheck和nodeselect,第一次点击checkbox,先触发的是nodeselect事件,复选框选中了,然 ...

你不是说两个方法没有影响的?
作者: zxloveapple    时间: 2016-12-13 14:27:51

zxloveapple 发表于 2016-12-13 14:18
你不是说两个方法没有影响的?

而且只有第一次一点击复选框触发nodecheck事件,以后再点击一般触发的是nodeselect事件,check事件没有进入。看了下nodecheck和nodeselect,一个调用的mousedown事件,并且设置了settimeout,一个调用的click事件,觉得是延时造成的,但是没有找到click的延时在哪里
作者: felt    时间: 2016-12-13 16:24:35

zxloveapple 发表于 2016-12-13 14:27
而且只有第一次一点击复选框触发nodecheck事件,以后再点击一般触发的是nodeselect事件,check事件没有进 ...

2个事件是没影响
但是你这操作会触发2个事件,你的处理有相互影响了是我们管不到的
select的选中效果再次点击同一个节点是不会触发的
作者: zxloveapple    时间: 2016-12-13 17:38:16

felt 发表于 2016-12-13 16:24
2个事件是没影响
但是你这操作会触发2个事件,你的处理有相互影响了是我们管不到的
select的选中效果再次 ...

直接点击checkbox为什么会触发nodeselect事件?
作者: zxloveapple    时间: 2016-12-14 09:12:10

q电核子 发表于 2016-12-14 04:04
终于看完了~~~

你来打广告的?
作者: felt    时间: 2016-12-14 09:59:55

zxloveapple 发表于 2016-12-13 17:38
直接点击checkbox为什么会触发nodeselect事件?

点击节点,包括checkbox部分第一次都会选中节点。
作者: zxloveapple    时间: 2016-12-14 10:46:22

felt 发表于 2016-12-14 09:59
点击节点,包括checkbox部分第一次都会选中节点。

我理解你说的,也就是点击checkbox的时候都会触发nodeselect,只是以后再点击因为节点已经选中了,所以不会触发。我在选中事件中让触发了复选框选中事件,这个时候复选框认为第二次点击,本来已经选中了,结果变成了未选中。
你们把复选框作为节点的一部分,那么我想实现节点选中的时候,复选框也选中,要怎么做?
作者: felt    时间: 2016-12-14 11:13:40

zxloveapple 发表于 2016-12-14 10:46
我理解你说的,也就是点击checkbox的时候都会触发nodeselect,只是以后再点击因为节点已经选中了,所以不 ...

onnodeselect事件里面稍微延时一点这行checknode操作
作者: zxloveapple    时间: 2016-12-14 11:48:04

felt 发表于 2016-12-14 11:13
onnodeselect事件里面稍微延时一点这行checknode操作

好吧,谢了。




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2