easyUI重绘combobox中下拉箭头

来源:互联网 发布:mac mini好吗 编辑:程序博客网 时间:2024/04/27 19:56

下午群里一个朋友问了我一个问题,她行要重绘combobox的下拉箭头。我当时第一想法就是让她把原生的图标替换不就好了嘛。可人家又说,要单选和多选的下拉箭头图标是不一样的。一段时间没用也不知道easyUI有没有给combobox开这个口子的,于是看了看文档,发现没有。那么看样子只能看源码咯,不过combo没有源码,只有变态的“_1,_2”命名的版本:

if(_4.hasDownArrow){    _6.push({iconCls:"combo-arrow",handler:function(e){    _a(e.data.target);}});

hasDownArrow控制了是否显示下拉箭头,这里如果设置为false,那么就没有下拉箭头了,但是随之没有的也就是绑定在 下拉箭头上的事件。

好了,再接着看看,发现上面还有:

var _4=_3.options;// 中间有省略var _6=$.extend(true,[],_4.icons);

那么可以想到_4就是comboboxoptions,而_6则是_4中的icons属性。噢?还有icons属性,怎么官方文档上没有看到?难道是隐藏属性吗?呵呵
再看看最开始那段代码:

if(_4.hasDownArrow){    _6.push({iconCls:"combo-arrow",handler:function(e){    _a(e.data.target);}});

应该能想到icon的格式了吧,对,就是{iconCls:"", handler:function(){}}。而icons呢则是一个数组,这样下面就可以写了:

    hasDownArrow:false,    icons:[{        iconCls:'icon-room-16',        handler:function(){            $(this).parent().next().click();        }    }],    editable:false

其实也就是完全不使用DownArrow的逻辑,而自己放图标自己处理点击事件,而这里的handler也实现的很简单,就是模拟点击了combobox的非图标部分,所以这里editable设置为false是必须的。

2 0
原创粉丝点击