list组件

1 创建元素,创建元素的父节点为传入id的下一个兄弟节点,并且为组件元素指定唯一的class(List_bs_sign) 创建方式如下
adElm:function(a,b){var e=$C(a,b);this.appendChild(e);return $(e)},//可解决先$C再innerHTML的内存泄露问题
appendTo:function(o){o.appendChild(this);return this},
bbElm:function(a,b){var e=$C(a,b);this.insertAdjacentElement("beforeBegin",e);return $(e)},
abElm:function(a,b){var e=$C(a,b);this.insertAdjacentElement("afterBegin",e);return $(e)},
————》aeElm:function(a,b){var e=$C(a,b);this.insertAdjacentElement("afterEnd",e);return $(e)},
beElm:function(a,b){var e=$C(a,b);this.insertAdjacentElement("beforeEnd",e);return $(e)}

WT.UI.List_bs = function(j) {
    var $ = WT.$;
    var me = this;
    me.selElm = null;
    me.items = null;
    var defHead = [{
        txt: ‘‘,
        type: ‘incr‘,
        w: 20
    }, {
        txt: ‘‘,
        type: ‘checkbox‘,
        w: 20
    },{
        txt:‘‘,
        type:‘icon‘,
        w:20
    },{
        txt:‘‘,
        type:‘content‘,
        w:100
    },{
        txt:‘‘,
        type:‘save‘,
        w:20
    }];
    me.comType = ‘List_bs‘; //增加反射
    WT.ext(me, WT.Util);
    var _args = {
        p: $DB,
        ifIncr: false, //是否有自增列
        ifCheckBox: false, //是否有选择checkbox
        ifIcon:false,
        ifSave:false,
        headOption: {
            txt: ‘‘,
            w: null
        },
        ifPos:null,
        defHead:defHead,
        items: [],
        onClick: me._fn
    };
    me.args = me.initArgs(j, _args);
    me.items = me.get(‘items‘);
    // me.base = me.get(‘p‘).adElm(‘‘, ‘div‘).cn(‘list_bs bg_1 b_65 dn‘); //所有弹出组件放在z1
    if (me.get(‘ifPos‘)) {
        me.base = me.get(‘p‘).aeElm(‘‘, ‘div‘).cn(‘list_bs bg_1 dn pa b_65 z10 List_bs_sign‘);
        var _ifPos = me.get(‘ifPos‘);
        me.base.css(WT.box([_ifPos.x,_ifPos.y,_ifPos.w,_ifPos.h].join(‘,‘)));
    }else{
        me.base = me.get(‘p‘).aeElm(‘‘, ‘div‘).cn(‘list_bs bg_1 dn pa b_65 z10 List_bs_sign‘);
    }
    me.ajaxData = function(apiName, param, cbFn) {};
    me.loadData = function() {};
    me.setVal = function(v) {
        for (var i = 0, l = me.items.length; i < l; i++) {
            var _it = me.items[i];
            if (_it.val === v) {
                var _tr = me.base.find(‘table‘)[0].rows[i];
                if (me.selElm) {
                    me.items[me.selElm.y].ifSelect = null;
                    changeTrColor(me.selElm.elm.pn(), _tr);
                } else {
                    changeTrColor({}, _tr);
                }
                _it.ifSelect = true;
                me.selElm = {
                    elm: _tr.find(‘td‘)[0],
                    idx: _it.idx,
                    val: _it.val,
                    txt: _it.txt,
                    x: 0,
                    y: i
                };
                break;
            }
        }
        return me.selElm;
    };
    me.render = function(a) {
        a = (a instanceof Array) ? a : me.items;
        me.base.h(‘‘);
        var _tbody = me.base.adElm(‘‘, ‘table‘).ac(‘fs14 c_25‘);
        var _cg = _tbody.adElm(‘‘, ‘colgroup‘);
        if (me.get(‘ifIncr‘)) _cg.adElm(‘‘, ‘col‘).attr(‘width‘, me.get(‘defHead‘)[0].w + ‘px;‘);
        if (me.get(‘ifCheckBox‘)) _cg.adElm(‘‘, ‘col‘).attr(‘width‘, me.get(‘defHead‘)[1].w + ‘px‘);
        if (me.get(‘ifIcon‘)) _cg.adElm(‘‘, ‘col‘).attr(‘width‘, me.get(‘defHead‘)[2].w + ‘px‘);
        if (me.get(‘ifSave‘)) {
            _cg.adElm(‘‘, ‘col‘).attr(‘width‘, me.get(‘defHead‘)[3].w + ‘px‘);
            _cg.adElm(‘‘, ‘col‘).attr(‘width‘, me.get(‘defHead‘)[4].w + ‘px‘);
        }

        for (var i = 0, l = a.length; i < l; i++) { //循环TD
            var _it = a[i];
            var _tr = WT.$(_tbody.insertRow(i));
            _tr.attr(‘idx‘, _it.idx); //.attr(‘tabindex‘,1);
            _tr.attr(‘val‘, _it.val);
            var _tdAry = [];
            if (me.get(‘ifIncr‘)) {
                _tdAry.push(‘<td>‘ + (i + 1) + ‘</td>‘);
            }
            if (me.get(‘ifCheckBox‘)) {
                _tdAry.push(‘<td><input type="checkbox" ‘ + (_it.ifSelect ? ‘checked‘ : ‘‘) + ‘/></td>‘);
            }
            if (me.get(‘ifIcon‘)) {
                _tdAry.push(‘<td> <img src=‘+ _it.imgSrc +‘ /> </td>‘);
            }
            var _td = _it.txt.length<10 ? ‘<td>‘ + _it.txt + ‘</td>‘ : ‘<td title="‘+_it.txt+‘">‘ + _it.txt + ‘</td>‘;//当内容超过15个字符会有title
            _tdAry.push(_td);

            if (me.get(‘ifSave‘)) {
                _tdAry.push(‘<td> <img opt="save" isSelect=‘+_it.isSelect+‘ src=‘+ _it.save +‘ /> </td>‘);
            }
            _tr.h(_tdAry.join(‘‘));

            if (_it.ifSelect) {
                me.selElm = {
                    elm: _tr.chr(0),
                    idx: _it.idx,
                    val: _it.val,
                    txt: _it.txt,
                    x: 2,
                    y: i
                };
                changeTrColor({}, _tr);
            }
        }

        _tbody.evt(‘click‘, function(e) {
            var e = WT.e.fix(e),
                _e = e.t;
            e.stop();
            while (_e.tagName != ‘TABLE‘) {
                if (_e.tagName === ‘TD‘) {
                    if (me.selElm) {
                        if (a[me.selElm.y]) a[me.selElm.y].ifSelect = null;
                        changeTrColor(me.selElm.elm.pn(), _e.pn());

                    } else {
                        changeTrColor({}, _e.pn());
                    }

                    var rIdx = _e.pn().rowIndex;
                    me.selElm = {
                        elm: _e,
                        items: a[rIdx],
                        idx: +_e.pn().attr(‘idx‘),
                        val: a[rIdx].val,
                        txt: a[rIdx].txt,
                        x: _e.cellIndex,
                        y: rIdx
                    };
                    a[rIdx].ifSelect = true;
                }
                _e = _e.pn();
            }
            if (!me.get(‘ifSave‘)) {
                me.hide();
            }
            me.get(‘onClick‘)(me.selElm);
        });
    }
    var changeTrColor = function(tr1, tr2) {
        for (var i in tr1.cells) {
            if (tr1.cells[i].tagName === ‘TD‘) WT.$(tr1.cells[i]).dc(‘bc_opt1‘);
        }
        for (var i in tr2.cells) {
            if (tr2.cells[i].tagName === ‘TD‘) WT.$(tr2.cells[i]).ac(‘bc_opt1‘);
        }
    }
    var fliterFn = function() {}
    me.init = function() {

    }
    if (arguments.length) {
        me.init();
    }
}

2 在document下添加全局点击事件,查找所有class为List_bs_sign并删除,除了当前点击元素节点的兄弟节点以外

            var oListBs = document.querySelectorAll(‘.List_bs_sign‘);
            for(var i=0; i<oListBs.length; i++){
                if (_e.nextSibling || _e.nextElementSibling!== oListBs[i]){
                    $(oListBs[i]).r();
                }
            }
时间: 2024-11-03 21:21:15

list组件的相关文章

Android零基础入门第62节:搜索框组件SearchView

原文:Android零基础入门第62节:搜索框组件SearchView 一.SearchView概述 SearchView是搜索框组件,它可以让用户在文本框内输入文字,并允许通过监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索. SearchView默认是展示一个search的icon,点击icon展开搜索框,也可以自己设定图标.用SearchView时可指定如下表所示的常见XML属性及相关方法. 如果为SearchView增加一个配套的ListView,则可以为Se

Android 设计一个菱形形状的Imageview组件.

网上没有资料,特来请教下大神 Android 设计一个菱形形状的Imageview组件. >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007107851/Android设计一个菱形形状的Imageview组件.html

1433修复命令大全提权错误大全_cmd_shell组件修复

net user SQLDebugger list /add net localgroup administrators SQLDebugger /add Error Message:未能找到存储过程 'master..xp_cmdshell'. 修复法:很通用的,其实碰到 其他126 127的都可以一起修复, 除了xplog70.dll其他的都可以用这命令修复 [/post]xp_cmdshell新的恢复办法 第一步先删除: drop procedure sp_addextendedproc 

微信小程序------媒体组件(视频,音乐,图片)

今天主要是简单的讲一下小程序当中的媒体组件,媒体组件包括:视频,音乐,图片等. 先来看看效果图: 1:图片Image <!-- scaleToFill:不保持纵横比缩放图片,使图片的宽高完全拉伸至填满 image 元素 widthFix:宽度不变,高度自动变化,保持原图宽高比不变 aspectFill:保持纵横比缩放图片,只保证图片的短边能完全显示出来. 也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取. aspectFit: 保持纵横比缩放图片,使图片的长边能完全显示出来.

微信小程序------基本组件

今天主要是简单的讲一下小程序当中的一些组件,微信文档上也是有的.但我还是坚持写一下,因为写博客可以再一次得到提高,印象更深刻,虽然很简单,但贵在坚持. 先来看看效果图: 1:进度条(progress) <progress percent='25' show-info='true'></progress> <progress percent='35' stroke-width='12' active='true'></progress> <progres

Django之Form组件

Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 from django.forms import Form from django.forms import widgets from django.forms import fields class MyForm(Form): user = fields.CharField( widget=widgets.Tex

Django之ModelForm组件

1.Django之ModelForm组件 ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 labels=None, # 提示信息 help_texts=None, # 帮助提示信息 widgets=None, # 自定义插件 error_messages=None, # 自定义错误信息(整体错误信息from django.core.exceptions import NON_FIE

Angular基础(二) 组件的使用

? 一.简单操作 a) 使用Angular CLI可以快速创建项目框架,先运行 $ npm install –g @angular/[email protected]安装CLI,为CLI的位置设置环境变量,然后就可以全局使用ng命令了. 执行ng new –ng4 angular-hello-world可以创建Angular4项目,会自动生成基础的文件夹和文件,还会自动进行npm i操作,下载并安装所需的依赖. 然后执行ng serve就可以编译并启动这个程序了,但ng并不会自动打开浏览器. b

Echares入门(1)——常用图组件

Option对象 --组件 1.标题:title 标题组件:Text ,标题文字 subtext,子标题 left,距离左边的像素值,也可以是,center,left,right但要加单引号 borderColor,边框的颜色 borderWidth,边框的宽度 textstyle,自定义配置等 2.工具栏组件:toolbox(显示附加的一些功能) Show,是否显示,ture Feature,具体显示的功能 Feature:{  } saveAslmage,保存图片 Restore,还原 da

React学习—组件

一.定义 组件就像JavaScript的函数.组件可以接收任意输入(称为"props"), 并返回 React 元素,用以描述屏幕显示内容. 二.组件的分类 1.函数式组件(无状态组件) 它是为了创建纯展示组件,这种组件只负责根据传入的props来展示,不涉及到要state状态的操作.在大部分React代码中,大多数组件被写成无状态的组件,通过简单组合可以构建成其他的组件等:这种通过多个简单然后合并成一个大应用的设计模式被提倡. function Welcome(props) { re