easyUI重绘combobox中下拉箭头

下午群里一个朋友问了我一个问题,她行要重绘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是必须的。

时间: 2024-10-07 05:38:25

easyUI重绘combobox中下拉箭头的相关文章

重绘ComboBox —— 让ComboBox多列显示

最近在维护一个winform项目,公司购买的是DevExpress控件 (请问怎么联系DevExpress工作人员? 我想询问下,广告费是怎么给的.:p),经过公司大牛们对DevExpress控件疯狂的重写.封装.加密.混淆...等一系列的操作,制作了一套 安全+实用 .基于DevExpress控件又高于DevExpress控件的模板.此时,大家也许觉得我夸张了.但是哥很淡定的告诉大家:不信拉倒! 一系列绚丽的控件中,目前最让我久久不能忘记吃早餐的就是ComboBoxEdit的显示多列的功能.所

easyui的combobox下拉框初始化默认值以及保持该值一直显示的方法

easyui的combobox下拉框默认初始值是空,下面是实现从远程加载数据之后初始化默认值,以及让该值一直排在下拉框的最顶部的方式. 目前的需求是需要在初始化的时候添加"全部数据库"字段,并且在下拉的时候,"全部数据库"一直排在最顶部. 初始化效果如下: 下拉之后的效果如下: 实现方式: easyui的combobox有一个loader属性,easyui的API对loader属性说明如下: easyui的combobox有一个onLoadSuccess事件,eas

TListView Header重绘和高度设置

TListView 的 Header 部分默认 BtnFace 颜色,高度也不能改变.我们可以通过编写一些代码来实现这些功能: 获得TListView 的Header 的句柄: TListView的Header其实是一个 HeaderContorl 控件.要获得他的句柄需要调用下面的代码 //--------------------------------------------------------------------------- #include <vcl.h> #pragma h

高性能WEB开发:重排与重绘

DOM编程可能最耗时的地方,重排和重绘. 1.什么是重排和重绘 浏览器下载完页面中的所有组件--HTML标记.JavaScript.CSS.图片之后会解析生成两个内部数据结构--DOM树和渲染树. DOM树表示页面结构,渲染树表示DOM节点如何显示.DOM树中的每一个需要显示的节点在渲染树种至少存在一个对应的节点(隐藏的DOM元素disply值为none 在渲染树中没有对应的节点).渲染树中的节点被称为"帧"或"盒",符合CSS模型的定义,理解页面元素为一个具有填充

iOS 视图:重绘与UIScrollView(内容根据iOS编程编写)

我们继续之前的 Hypnosister 应用,当用户开始触摸的时候,圆形的颜色会改变. 首先,在 JXHypnosisView 头文件中声明一个属性,用来表示圆形的颜色. #import "JXHypnosisView.h" @interface JXHypnosisView () /** 颜色 */ @property (nonatomic,strong) UIColor * circleColor; @end @implementation JXHypnosisView - (in

[Android FrameWork 6.0源码学习] View的重绘过程之Draw

View绘制的三部曲,测量,布局,绘画现在我们分析绘画部分测量和布局 在前两篇文章中已经分析过了.不了解的可以去我的博客里找一下 下面进入正题,开始分析调用以及函数原理 private void performDraw() { if (mAttachInfo.mDisplayState == Display.STATE_OFF && !mReportNextDraw) { return; } final boolean fullRedrawNeeded = mFullRedrawNeede

重绘(repaints)与重排(reflows)

当页面布局和几何属性改变时就需要"重排" 避免在修改样式的过程中使用 offsetTop, scrollTop, clientTop, getComputedStyle() 这些属性, 它们都会刷新渲染队列 最小化重绘和重排, 尽量一次处理a. 使元素脱离文档流(隐藏元素),进行处理后,再显示元素b. 使用 documentFragment 或 innerHTMLc. 将原始元素拷贝到一个脱离文档的节点中, 修改副本, 完成后再替换原始元素

浏览器的重绘与重排

在项目的交互或视觉评审中,前端同学常常会对一些交互效果质疑,提出这样做不好那样做不好.主要原因是这些效果通常会产生一系列的浏览器重绘(redraw)和重排(reflow),需要付出高昂的性能代价.那么,什么是浏览器的重绘和重排呢?二者何时发生以及如何权衡?如何在具体的开发过程中将重绘和重排引发的性能问题考虑进去?本文期待可以部分解释以上三个问题. 浏览器从下载文档到显示页面的过程是个复杂的过程,这里包含了重绘和重排.各家浏览器引擎的工作原理略有差别,但也有一定规则.简单讲,通常在文档初次加载时,

WM_PAINT消息在窗口重绘的时候产生,那什么时候窗口会重绘(异步工作方式,效率更高,灵活性更强)

Q:wm_paint消息在窗口重绘的时候产生,那什么时候窗口会重绘?? A: 严格地说,只有当收到WM_PAINT消息后窗口会重绘 但是引起这个消息的事件有很多, 比如: 首次创建 移动 改变大小 showwindow/ activate window/ invalidate window .... 系统为什么不在调用Invalidate时发送WM_PAINT消息呢?又为什么非要等应用消息队列为空时才发送WM_PAINT消息呢?这是因为系统把在窗口中的绘制操作当作一种低优先级的操作,于是尽可能地