最近遇到一个关于easyui中combotree控件的困扰,我这个人又比较喜欢钻牛角尖,所以搞了好几天还没搞定。
问题是这样的,在看我本地的easyui api帮助文档的时候,发现combotree里面unselect这个方法,然后在本地代码上试了下
CheckModifyType: function (node) { if (node.Data != 3) { $("#DTree").combotree("unselect"); } }
这是combotree的click方法的引用,node是选择项,绑定combotree的时候JSON有Data这个属性用来给我判断是否运行用户选择combotree。如果Data!=3,就不允许选择。使用unselect方法后,combotree会停留在选择状态,下拉面板不会关闭,用户可以继续选择。这样用户体验比较好,如果验证不符合条件后用combotree的clear方法也能实验验证,但是combotree的下拉面板会关闭,在onclick方法中调用showPanel也没有效果,所以影响用户体验。
我本地是1.4.3版本的。
结果第二天再运行网页发现遇到unselect方法报错了,说不存在这个方法,然后我又去看了我本地的easyui api帮助文档,发现确实没找到这个方法,奇怪了,难道我之前在梦游么? 我明明记得前几天这个方法确实我调用的,现象就是我上面说的那样。
现在为什么突然不能用了呢?网上查资料发现很多列子是调用的,但是我自己试了又明确是不行,我怀疑是版本问题,目前再一个版本一个版本的下下来看源码,关键是现在easyui官方的网站又打不开,搞了好几天了,唉有点要崩溃的感觉。
其实已经准备牺牲用户体验放弃这个问题了,最后的办法就是来博客园求助,希望大家多多指点。
哦对了,也试过自己扩展combotree的unselect方法,但是总是不成功,按照
$.extend($.fn.tree.methods,{ unSelect:function(jq,target){ return jq.each(function(){ $(target).removeClass("tree-node-selected"); }); } }); //调用 node = $("#tt1").tree("getSelected"); $("#tt1").tree("unSelect",node.target);
这样去扩展,但是没什么效果,可能是我扩展的不对,看了下源码的命名规则是真心的累啊~
而且其实我还在纠结combotree到底是不是自带unselect方法呢?我记得我自己明明用过的啊,为什么第二天又不能用了?我本地的easyui.js还是那个1.4.3版本啊,到底发生了什么事呢?