| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852 | 
							- //#region 选择器区域
 
- //var win = window;//  doc = document;
 
- //window.U.Json_ = window.$; //记录命名控件 //全局使用  解决jquery覆盖我们的选择器的问题。
 
- /*下面的写法会导致程序在window.onload之前执行,为什么要在window.onload之前执行,如果非要执行,能否把所有要做window.onload之前执行的整合在一个文件?并列明必须先执行的理由?*/
 
- /*
 
- 选择器前言
 
- 好处:
 
- 1、简化项目的代码
 
- 2、当我对系统的ocument.getElementById  document.getElementsByTagName document.getElementsByClassName有奇异 觉得里面需要修改添加一些新的方法处理 可以统一处理
 
- */
 
- //#region 创建元素
 
- /*
 
- *使用$$操作符简化编码长度。
 
- *例:$$("div", { "style": { "cssText": "font-size:16px;float:left;line-height:33px;width:40%;margin:0px 0px 0px 15px;" }, "innerHTML": "文件名" }, Inner_J)
 
- * @param   {string} 元素的类型tagName 例如:"div"
 
- * @param   {object} 集合,类似  { "style": { "cssText": "font-size:16px;float:left;line-height:33px;width:40%;margin:0px 0px 0px 15px;" }, "innerHTML": "文件名" }
 
- * @param   {element} 所要追加的父亲元素,把第二个参数作为孩子节点追加到第三个参数。par代表父亲元素
 
- * @param   {element} 追加的位置,如果有此参数,则把创建的元素追加到此元素的前面。此元素必须为第三个参数的孩子节点。
 
- */
 
- U.quickCreate = window.$$ = function (str, obj, parentel, child) { //创建基本元素元素
 
-     var i, _element;
 
-     //由于createDocumentFragment和createTextNode太长,可以通过简单的方式去创建
 
-     var _obj = {
 
-         "frag": "createDocumentFragment" //碎片元素
 
-         //  "text": "createTextNode" //文本元素
 
-     };
 
-     //判断是否创建上面的元素方式
 
-     if (_obj[str]) {
 
-         _element = document[_obj[str]]();
 
-     }
 
-     //创建制定标签的元素
 
-     else {
 
-         _element = document.createElement(str);
 
-     }
 
-     //给元素添加属性
 
-     if (obj) {
 
-         U.selectEl(_element).addAttrArray(obj);
 
-     }
 
-     //如果存在父亲,则追加孩子节点。
 
-     if (parentel) {
 
-         //如果存在第四个参数,则追加到第四个参数的前面。否则,追加在最后面。
 
-         if (child) {
 
-             parentel.insertBefore(_element, child);
 
-         }
 
-         //追加到父亲元素的最后面
 
-         else {
 
-             parentel.appendChild(_element);
 
-         }
 
-     }
 
-     //返回创建的元素
 
-     return _element;
 
- }
 
- //#endregion
 
- //#region 1473用的快速选择器 去除没有必要的功能 只保留简单的选择功能
 
- /**
 
- * 初始化编辑区域
 
- *
 
- * @param   {string} 选择 首先我们会定义3个获取元素的方法代替系统的 document.getElementById  document.getElementsByTagName document.getElementsByClassName
 
- * @param   {元素} 在元素下面搜索符合参数一的所有孩子节点
 
- 例一、$("#U_MD_D_H");找名为U_MD_D_H唯一id。
 
- 例二、$("div", UDKF):在元素UDKF下面搜索所有div元素。
 
- 例三:$(".className", UDKF) 在元素UDKF下面找classname等于classname的元素。不建议用,性能太低。
 
- */
 
- $ = U.selectEl = function (name, el) {
 
-     //调用选择器的方法
 
-     return new U.select(name, el);
 
- }
 
- /**
 
- * 初始化编辑区域
 
- *
 
- * @param   {string} 选择的元素,例如"div"
 
- * @param   {document} 搜索的层次
 
- * 返回值:数组  [elment,elment,element]
 
- *    var a=U.select("div.classname",body);
 
- *    var b=U.select("input,a)
 
- */
 
- U.select = function (selector, el) { //定义类
 
-     //设置值
 
-     this.length = 0; //选择元素的总长度
 
-     this.context = el || document; //选择器的域(在哪个元素下面选,默认是document)
 
-     //获取元素选择
 
-     this.select(selector, el); //选择元素
 
- }
 
- U.select.EVENTS = [];  //元素绑定事件存储的地方
 
- /**
 
- * 这里是选择器的方法集合
 
- *
 
- */
 
- U.select.prototype = {//原型对象使用
 
-     /**
 
-     * 定义选择器构造器
 
-     *
 
-     * @param   {string} 选择特殊字符串 包含# & []
 
-     * @param   {document} 搜索的层次
 
-     */
 
-     select: function (name, el) { //选择器选择
 
-         var _selectel;
 
-         //如果是字符串说明用户要通过选择器找到字符串
 
-         if (U.UF.C.isString(name)) {
 
-             var _r = name.substring(0, 1), //获取特殊字符 . # 或者 ""
 
-                 _n = name.substring(1, name.length), //获取标签名
 
-                 _doc = el || document; //去除特殊字符后
 
-             //这里是判断获取
 
-             try { //这里利用基础的选择器选取数据 
 
-                 switch (_r) {
 
-                     case "#": //根据id获取 因为id获取只能通过全局搜索 但是由于项目中有存在克隆的情况 会出现id不唯一的情况
 
-                         if (_doc == document && U.UF.S.EN.test(_n)) {
 
-                             _selectel = document.getElementById(_n);
 
-                         }
 
-                         break;
 
-                     case ".": //根据className获取
 
-                         if (U.UF.S.EN.test(_n)) {
 
-                             _selectel = _doc.getElementsByClassName(_n);
 
-                         }
 
-                         break;
 
-                     case "*":
 
-                         //如果后面有输入id,那么找所有的媒体文件
 
-                         if (U.UF.S.EN.test(_n)) {
 
-                             _selectel = document[_n]; //获取媒体文件
 
-                             if (!_selectel) { //如果没有找到说明不兼容
 
-                                 if (U.UF.CI.getBrowser().browser == "msie") { //ie得到媒体文件的方法
 
-                                     _selectel = document.getElementById(_n);
 
-                                 }
 
-                                 //非ie系列
 
-                                 else {
 
-                                     _selectel = document.embeds[_n];
 
-                                 }
 
-                             }
 
-                         }
 
-                         //否则就是直接找指定元素下面的所有元素
 
-                         else {
 
-                             _selectel = _doc.getElementsByTagName("*");
 
-                         }
 
-                         break;
 
-                     default: //标签的获取 //获取指定的元素
 
-                         if (U.UF.S.EN.test(name)) {
 
-                             _selectel = _doc.getElementsByTagName(name); //除去特殊字符的处理
 
-                         }
 
-                         break;
 
-                 }
 
-             }
 
-             catch (e) {
 
-             }
 
-             //判断是否获取元素成功,如果上面简单的选择去不成功,那么就通过其他的选择器方案去获取
 
-             if (_selectel == null) {
 
-                 _selectel = U.UF.CP.selectorElement(name, _doc); //其他选择的方式获取
 
-             }
 
-         }
 
-         //如果用户第一个参数传的是元素,那么就直接设置
 
-         else if (name) {
 
-             _selectel = name;
 
-         }
 
-         //添加元素到this里面
 
-         if (_selectel) {
 
-             this.addElement(_selectel);
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 添加查找到的元素到this里
 
-     *
 
-     * @param   {elements} 选择的元素数组
 
-     */
 
-     addElement: function (els) {
 
-         //把所有获取出来的元素转化成数组,以便下面循环添加 U.UF.C.isElement(els) || els.length == null
 
-         if ((U.UF.C.isElement(els) || els.length == null) || els.toString() == "[object Window]") {
 
-             els = [els];
 
-         }
 
-         //循环所有的元素,把元素设置到this里面,这样用户获取到的元素集就能通过this[0]或者this[id]去获取了
 
-         for (var i = 0; i < els.length; i++) {
 
-             //如果元素存在的处理
 
-             this[i] = els[i];
 
-             //如果元素有id,那么给返回值添加一个id的处理,以便返回值中有以id作为key的返回值
 
-             if (els[i].id) {
 
-                 this[els[i].id] = els[i];
 
-             }
 
-             this.length++; //没添加一个那么选择的元素的长度多一个
 
-         }
 
-     },
 
-     /**
 
-     * 在选择好的元素下面继续搜索子元素
 
-     *
 
-     * @param   {string} 选择特殊字符串 包含# & []
 
-     * @param   {number} 搜索的层次
 
-     */
 
-     find: function (name, item) { //获取元素的后代
 
-         var i = item || 0, //由于选择选择出来的元素是数组,所以需要筛选出第几个需要获取子节点
 
-             _length = item + 1 || this.length, //选择元素的长度
 
-             _elements = new U.select(); //由于新选择了元素,那么实例化选择器
 
-         for (; i < _length; i++) {
 
-             _elements.select(name, this[i]); //重新选择添加处理
 
-         }
 
-         return _elements; //返回最后选择的结果
 
-     },
 
-     /**
 
-     * 当前元素前一个兄弟节点
 
-     *
 
-     * @param   {string} 选择特殊字符串 包含# & []
 
-     * @param   {number} 搜索的层次
 
-     */
 
-     prev: function (item) {
 
-         var _selectel, //获取选择的元素
 
-             _selects = [], //所有选择的元素
 
-             i = item || 0, //由于选择选择出来的元素是数组,所以需要筛选出第几个需要获取子节点
 
-             _length = item + 1 || this.length, //选择元素的长度
 
-             _elements = new U.select(); //由于新选择了元素,那么实例化选择器
 
-         //循环的去获取每个元素的上级元素
 
-         for (; i < _length; i++) {
 
-             _selectel = this[i];
 
-             if (_selectel) {
 
-                 //用do while去过滤文本节点,只找元素节点
 
-                 do {
 
-                     _selectel = _selectel.previousSibling;
 
-                 }
 
-                 while (_selectel && _selectel.nodeType !== 1)
 
-             }
 
-             //找到节点追加到数组里
 
-             if (_selectel) {
 
-                 _selects.push(_selectel);
 
-             }
 
-         }
 
-         //把元素添加到_elements里,并返回到前台
 
-         _elements.addElement(_selects);
 
-         return _elements;
 
-     },
 
-     /**
 
-     * 当前元素之后第一个兄弟节点
 
-     *
 
-     * @param   {string} 选择特殊字符串 包含# & []
 
-     * @param   {number} 搜索的层次
 
-     */
 
-     next: function (item) {
 
-         var _selectel, //获取选择的元素
 
-             _selects = [], //所有选择的元素
 
-             i = item || 0, //由于选择选择出来的元素是数组,所以需要筛选出第几个需要获取子节点
 
-             _length = item + 1 || this.length, //选择元素的长度
 
-             _elements = new U.select(); //由于新选择了元素,那么实例化选择器
 
-         //循环的去获取每个元素的上级元素
 
-         for (; i < _length; i++) {
 
-             _selectel = this[i];
 
-             if (_selectel) {
 
-                 //用do while去过滤文本节点,只找元素节点
 
-                 do {
 
-                     _selectel = _selectel.nextSibling;
 
-                 }
 
-                 while (_selectel && _selectel.nodeType !== 1)
 
-             }
 
-             //找到节点追加到数组里
 
-             if (_selectel) {
 
-                 _selects.push(_selectel);
 
-             }
 
-         }
 
-         //把元素添加到_elements里,并返回到前台
 
-         _elements.addElement(_selects);
 
-         return _elements;
 
-     },
 
-     /**
 
-     * 获取所有的子元素
 
-     *
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     Nodes: function (item) {
 
-         item = item || 0; //由于选择选择出来的元素是数组,所以需要筛选出第几个需要获取子节点
 
-         //直接返回所有的子节点
 
-         if (this[item]) {
 
-             this[item].childNodes;
 
-         }
 
-         ;
 
-     },
 
-     /**
 
-     * 获取所有的子元素
 
-     *
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     Child: function (item) {//获取有效元素孩子节点
 
-         item = item || 0; //由于选择选择出来的元素是数组,所以需要筛选出第几个需要获取子节点
 
-         //如果选择的元素存在则获取子节点 通过U.UF.EL.getChildrenNoText 可以把 #text节点过滤
 
-         if (this[item]) {
 
-             return U.UF.EL.getChildrenNoText(this[item].childNodes)
 
-         }
 
-     },
 
-     /**
 
-     * 如果没有参数,则是查找自己的父亲,如果有参数,则查找符合条件的祖先元素。
 
-     * 如果UTF是数字n,则向上查找n层祖先。
 
-     * 如果UTF是属性,则查找符合条件的属性。
 
-     *
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     Parent: function (obj) {//获取上级父亲层
 
-         var _while,
 
-             _istrue,
 
-             _el = this[0];
 
-         obj = obj || 1; //如果没有条件,那么就是默认选取上一层的父亲
 
-         if (U.UF.C.isNumber(obj)) {
 
-             for (i = 0; i < obj; i++) {
 
-                 if (_el) { //判断是否有选取
 
-                     _el = _el.parentNode;
 
-                 }
 
-             }
 
-         }
 
-         else {
 
-             //循环的向上寻找制定条件的元素,最大不超过document层
 
-             _while: while (_el && _el != document) {
 
-                 _istrue = true;
 
-                 //循环判断条件是否匹配
 
-                 for (i in obj) {
 
-                     //如果条件匹配
 
-                     if (obj[i] != _el[i] && (!_el.getAttribute || _el.getAttribute(i) != obj[i])) {
 
-                         _istrue = false;
 
-                         break;
 
-                     }
 
-                 }
 
-                 //如果全部条件符合,那么直接跳出
 
-                 if (_istrue) {
 
-                     break _while;
 
-                 }
 
-                 //继续向上找
 
-                 else {
 
-                     _el = _el.parentNode;
 
-                 }
 
-             }
 
-         }
 
-         //返回找到的祖先层
 
-         return _el;
 
-     },
 
-     /**
 
-     * 获取所有的子元素
 
-     *
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     childs: function (item) {//获取孩子节点
 
-         return new U.select(this.Child(item));
 
-     },
 
-     /**
 
-     * 如果没有参数,则是查找自己的父亲,如果有参数,则查找符合条件的祖先元素。
 
-     * 如果UTF是数字n,则向上查找n层祖先。
 
-     * 如果UTF是属性,则查找符合条件的属性。
 
-     *
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     parentElement: function (obj, item) {//获取父亲节点
 
-         return new U.select(this.Parent(obj, item));
 
-     },
 
-     /**
 
-     * 克隆元素
 
-     *
 
-     * @param   {boolean}    设置为 true,如果您需要克隆节点及其属性,以及后代, 设置为 false,如果您只需要克隆节点及其后代
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     clone: function (deep, item) { //克隆元素 UDOD, UDID, USE
 
-         var i = item || 0,  //item 基本没有用
 
-             _returnarr = [], //返回的数据
 
-             _length = i + 1 || this.length; //克隆元素的长度
 
-         //循环克隆放入_returnarr里
 
-         for (; i < _length; i++) {
 
-             _returnarr.push(this[i].cloneNode(deep));
 
-         }
 
-         //返回选择器
 
-         return new U.select(_returnarr);
 
-     },
 
-     /**
 
-     * 把元素添加到制定的父亲层
 
-     *
 
-     * @param   {element} 添加到哪个父亲层
 
-     * @param   {number} 选择器结果里面的第几个
 
-     * @param   {element} 添加到哪个元素的上面
 
-     */
 
-     appendTo: function (parentel, item, childel) {//添加元素到制定的位置
 
-         var i = item || 0, //选择器结果里面的第几个
 
-             _length = item + 1 || this.length; //插入元素的长度
 
-         //循环条件元素
 
-         for (; i < _length; i++) {
 
-             //如果有子元素,就添加到这个子元素的前面
 
-             if (childel) {
 
-                 parentel.insertBefore(this[i], childel);
 
-             }
 
-             //添加到最后面
 
-             else {
 
-                 parentel.appendChild(this[i]);
 
-             }
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 添加子元素
 
-     *
 
-     * @param   {element} 需要追加的元素
 
-     * @param   {number} 选择器结果里面的第几个
 
-     * @param   {element} 添加到哪个元素的上面
 
-     */
 
-     append: function (el, item, childel) {//插入元素
 
-         item = item || 0; //选择器结果里面的第几个
 
-         //如果有子元素,就添加到这个子元素的前面
 
-         if (childel) {
 
-             this[item].insertBefore(el, childel);
 
-         }
 
-         //添加到最后面
 
-         else {
 
-             this[item].appendChild(el);
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 移除元素
 
-     *
 
-     * @param   {boolean}    设置为 true,如果您需要克隆节点及其属性,以及后代, 设置为 false,如果您只需要克隆节点及其后代
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     remove: function (item) {
 
-         var i = item || 0, //选择器结果里面的第几个
 
-             _length = item != null ? item + 1 : this.length; //移除的数量
 
-         //循环移除
 
-         for (; i < _length; i++) {
 
-             //判断是否有上一级
 
-             if (this[i] && this[i].parentNode) {
 
-                 this[i].parentNode.removeChild(this[i]); //移除
 
-             }
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 元素居中
 
-     *
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     Center: function (item) { //元素居中
 
-         var i = item || 0,  //选择器结果里面的第几个
 
-             _length = item + 1 || this.length; //居中弹出的数量
 
-         //循环弹出处理
 
-         for (; i < _length; i++) {
 
-             U.UF.F.windowTopCenter(this[i]); //居中弹出
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 返回元素的大小和位置
 
-     *
 
-     * @param   {number} 选择器结果里面的第几个
 
-     */
 
-     getElementInfo: function (item) {
 
-         return U.UF.EL.getElementInfo(this[item || 0]);
 
-     },
 
-     /**
 
-     * 返回元素的大小和位置
 
-     *
 
-     * 设置单个Css属性传参说明
 
-     * @obj     {string} 必填 css属性名
 
-     * @value   {string} 必填 css属性对应的值
 
-     * @item    {number} 选填 选择器结果里面的第几个
 
-     *
 
-     * 设置多个Css属性传参说明
 
-     * @obj     {string} 必填 需设置的cssjson
 
-     *    形如:{width : '100px', height: '100px', 'backgroud-color': 'red'}
 
-     * @value   {null}   占位传参  null
 
-     * @item    {number} 选填 选择器结果里面的第几个
 
-     */
 
-     css: function (obj, value, item) {//获取指定的css值
 
-         var i = item || 0, //选择第几个
 
-             _length = item + 1 || this.length, //长度
 
-             _isobject = U.UF.C.isObject(obj);
 
-         //如果是object,那么第二个参数就是item 所以这里的 value = item
 
-         if (_isobject) {
 
-             this.addAttrArray({ "style": obj }, value);
 
-         }
 
-         //如果第一个参数是strig类型那么value需要有值,如果有值那么就是设置,否则是获取css
 
-         else if (value != null) {
 
-             //循环的设置值
 
-             for (i; i < _length; i++) {
 
-                 obj = U.UF.EL.styleConversion(obj); //由于用户这边会穿 text-align 这样的值 但是在css里面 该值为 textAlign改成了大写
 
-                 try {
 
-                     this[i].style[obj] = value;
 
-                 } catch (e) { }
 
-             }
 
-         }
 
-         //获取css
 
-         else {
 
-             return U.UF.EL.getStyle(this[i], obj);
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 添加classname
 
-     *
 
-     * @param   {string} 移除的classname
 
-     */
 
-     addClass: function (classname, item) { //添加Class
 
-         var i = item || 0, //选择第几个
 
-             _length = item + 1 || this.length; //长度
 
-         //循环给元素添加class值
 
-         for (; i < _length; i++) {
 
-             U.UF.EL.addClass(this[i], classname);
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 移除classname
 
-     *
 
-     * @param   {string} 移除的classname
 
-     */
 
-     removeClass: function (classname, item) {//移除制定的class
 
-         var i = item || 0, //选择第几个
 
-             _length = item + 1 || this.length; //长度
 
-         //循环给元素移除classname
 
-         for (; i < _length; i++) {
 
-             U.UF.EL.removeClass(this[i], classname);
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 判断元素是否有制定的class
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     hasClass: function (classname, item) {
 
-         item = item || 0;
 
-         return U.UF.EL.isHasClass(this[item], classname);
 
-     },
 
-     /**
 
-     * 判断元素是否有制定的class
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     attr: function (obj, value, item) { //添加属性
 
-         var j,
 
-             i, //选择第几个
 
-             _length, //长度
 
-             _isobject = U.UF.C.isObject(obj); //判断元素是否为对象
 
-         //如果是object,那么第二个参数就是item 所以这里的 value = item
 
-         if (_isobject) {
 
-             i = value || 0; //选择第几个
 
-             _length = value + 1 || this.length; //长度
 
-             //循环所有的元素添加至
 
-             for (; i < _length; i++) {
 
-                 for (j in obj) {
 
-                     U.UF.EL.addAttributes(this[i], j, obj[j]); //给元素添加属性
 
-                 }
 
-             }
 
-         }
 
-         //如果第一个参数是strig类型那么value需要有值,如果有值那么就是设置,否则是获取css
 
-         else if (value != null) {
 
-             i = item || 0; //选择第几个
 
-             _length = item + 1 || this.length; //长度
 
-             //循环的设置值
 
-             for (i; i < _length; i++) {
 
-                 U.UF.EL.addAttributes(this[i], obj, value); //给元素添加属性
 
-             }
 
-         }
 
-         //获取属性,
 
-         else {
 
-             return this[item || 0].getAttribute(obj);
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 移除属性
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     rmAttr: function (name, item) { //移除属性
 
-         U.UF.EL.delAttributes(this[item || 0], name); //移除元素
 
-         return this;
 
-     },
 
-     /**
 
-     * 添加属性
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     addAttrArray: function (obj, item) {//赋值区域
 
-         var j, k,
 
-             _newcsstext,
 
-             _csstype,
 
-             _csstext = "", //csstext
 
-             i = item || 0, //选择第几个
 
-             _length = item + 1 || this.length; //长度
 
-         //循环的处理每个元素赋值
 
-         for (; i < _length; i++) {
 
-             //循环所有的属性
 
-             for (j in obj) {
 
-                 //css的添加方式
 
-                 if (j == "style") {
 
-                     _csstext = "";
 
-                     _newcsstext = obj[j]["cssText"];
 
-                     for (k in obj[j]) {
 
-                         _csstype = U.UF.EL.styleConversion(k, true); //把所有的cssText转成css-text,因为css在拼接的时候是以这种形式
 
-                         //cssText的设置方式,添加一份新的csstext
 
-                         if (_csstype == "css-text") {
 
-                             continue;
 
-                         }
 
-                         //如果是其他普通样式的添加,那么就拼接
 
-                         else if (k in this[i][j]) {
 
-                             _csstext += _csstype + ":" + obj[j][k] + ";";
 
-                         }
 
-                         //自定义属性的设置,情况比较少,但是在做兼容方案的时候可能会用到
 
-                         else {
 
-                             this[i][j][k] = obj[j][k];
 
-                         }
 
-                     }
 
-                     //如果需要设置cssText的处理
 
-                     if (_newcsstext) {
 
-                         _csstext = this[i][j]["cssText"] + ";" + _newcsstext + ";" + _csstext;
 
-                     }
 
-                     //如果是undefined或者是null这样不设置值的处理
 
-                     else if (_newcsstext !== "") {
 
-                         _csstext = this[i][j]["cssText"] + ";" + _csstext;
 
-                     }
 
-                     this[i][j]["cssText"] = _csstext;
 
-                 }
 
-                 //出css以外的添加方式 如 onclick事件赋值 classname赋值
 
-                 else {
 
-                     //如果是事件类型的,又是字符串类型,那么这里把它转化成函数
 
-                     if (j.indexOf("on") == 0 && U.UF.C.isString(obj[j])) {
 
-                         this[i][j] = new Function(obj[j]); //字符串转化成function
 
-                         continue;
 
-                     }
 
-                     //&& "string".indexOf(U.UF.C.getType((_UVE = UDE[j]))) > -1
 
-                     //如果是字符串,同时又是系统属性,那么通过setAttribute的方式设置属性,该方式设置属性可以让属性在网页调试模式下看到如<div kk="kk"> kk为自定义属性
 
-                     else if (U.UF.C.isString(obj[j]) && U.UF.EL.isCustomAttributes(this[i], j)) {
 
-                         //由于低版本的浏览器会报错,这里用try catch
 
-                         try {
 
-                             this[i].setAttribute(j, obj[j]);
 
-                         }
 
-                         catch (e) {
 
-                         }
 
-                     }
 
-                     try {
 
-                         this[i][j] = obj[j];
 
-                     }
 
-                     catch (e) { }
 
-                 }
 
-             }
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 隐藏元素
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     hide: function (item) {
 
-         this.css({ "display": "none" }, item);
 
-     },
 
-     /**
 
-     * 显示元素
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     show: function (item) { //显示元素
 
-         this.css({ "display": "block" }, item);
 
-     },
 
-     /**
 
-     * 获取长度
 
-     *
 
-     */
 
-     width: function () {
 
-         return U.UF.EL.getElementRealWidth(this[0]);
 
-     },
 
-     /**
 
-     * 获取长度
 
-     *
 
-     */
 
-     height: function () {
 
-         return U.UF.EL.getElementRealHeight(this[0]);
 
-     },
 
-     /**
 
-     * 鼠标移入的时候触发,由于onmouseover会出发多次 这里做兼容
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     mouseenter: function (cb, item) { //enter事件
 
-         //设置移入函数
 
-         this.addAttrArray({
 
-             "onmouseover": function () {
 
-                 U.UF.EV.stopBubbleMouseOutOrOver(this, cb); //判断用户移入的时候出发元素,进行判断元素是否移入
 
-             }
 
-         }, item);
 
-         return this;
 
-     },
 
-     /**
 
-     * 鼠标移出的时候触发,由于onmouseout会出发多次 这里做兼容
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     mouseleave: function (cb, item) { //leave事件
 
-         //设置移入函数
 
-         this.addAttrArray({
 
-             "onmouseout": function () {
 
-                 U.UF.EV.stopBubbleMouseOutOrOver(this, cb); //判断用户移入的时候出发元素,进行判断元素是否移入
 
-             }
 
-         }, item);
 
-         return this;
 
-     },
 
-     /**
 
-     * 鼠标移出的时候触发,由于onmouseout会出发多次 这里做兼容
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     gt: function (item) { //索引大于的元素
 
-         var i = item,  //item 基本没有用
 
-             _returnarr = [], //返回的数据
 
-             _elements = new U.select(); //由于重新筛选数据,那么需要新建一个选择器
 
-         //循环筛选元素
 
-         for (; i < this.length; i++) {
 
-             _returnarr.push(this[i]);
 
-         }
 
-         //循环添加到this里面
 
-         _elements.addElement(_returnarr);
 
-         return _elements;
 
-     },
 
-     /**
 
-     * 鼠标移出的时候触发,由于onmouseout会出发多次 这里做兼容
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     lt: function (item) {
 
-         var i = 0,  //item 基本没有用
 
-             _returnarr = []; //返回的数据
 
-         //循环筛选元素
 
-         for (; i < item; i++) {
 
-             _returnarr.push(this[i]);
 
-         }
 
-         //循环添加到this里面
 
-         return new U.select(_returnarr); //由于重新筛选数据,那么需要新建一个选择器
 
-     },
 
-     /**
 
-     * 元素事件绑定
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     bind: function (obj, value, item) {
 
-         var j,
 
-             i, //选择第几个
 
-             _length, //长度
 
-             _isobject = U.UF.C.isObject(obj); //判断元素是否为对象
 
-         //如果是object,那么第二个参数就是item 所以这里的 value = item
 
-         if (_isobject) {
 
-             i = value || 0; //选择第几个
 
-             _length = value + 1 || this.length; //长度
 
-             //循环所有的元素添加至
 
-             for (; i < _length; i++) {
 
-                 for (j in obj) {
 
-                     U.UF.EV.addElementEvent(j, this[i], obj[j]); //添加事件绑定
 
-                     //添加事件
 
-                     U.select.EVENTS.push({
 
-                         element: this[i], //绑定事件
 
-                         event: j, //事件
 
-                         fun: obj[j] //函数
 
-                     });
 
-                 }
 
-             }
 
-         }
 
-         //如果第一个参数是strig类型那么value需要有值,如果有值那么就是设置,否则是获取css
 
-         else if (value != null) {
 
-             i = item || 0; //选择第几个
 
-             _length = item + 1 || this.length; //长度
 
-             //循环的设置值
 
-             for (i; i < _length; i++) {
 
-                 U.UF.EV.addElementEvent(obj, this[i], value); //添加事件绑定
 
-                 //添加事件
 
-                 U.select.EVENTS.push({
 
-                     element: this[i], //绑定事件
 
-                     event: obj, //事件
 
-                     fun: value //函数
 
-                 });
 
-             }
 
-         }
 
-         return this;
 
-     },
 
-     /**
 
-     * 元素解除事件绑定
 
-     *
 
-     * @param   {string} classname
 
-     */
 
-     unbind: function (obj, value, item) { //事件绑定取消
 
-         var j,
 
-             i, //选择第几个
 
-             k,
 
-             _length, //长度
 
-             _isobject = U.UF.C.isObject(obj); //判断元素是否为对象
 
-         //如果是object,那么第二个参数就是item 所以这里的 value = item
 
-         if (_isobject) {
 
-             i = value || 0; //选择第几个
 
-             _length = value + 1 || this.length; //长度
 
-             //循环所有的元素添加至
 
-             for (; i < _length; i++) {
 
-                 for (j in obj) {
 
-                     U.UF.EV.delElementEvent(j, this[i], obj[j]); //删除事件绑定
 
-                     for (k = 0; k < U.select.EVENTS.length; k++) {
 
-                         if (U.select.EVENTS[k].element == this[i] && U.select.EVENTS[k].event == j && U.select.EVENTS[k].fun == obj[j]) {
 
-                             U.select.EVENTS.splice(k, 1);
 
-                             k--;
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         //如果第一个参数是strig类型那么value需要有值,如果有值那么就是设置,否则是获取css
 
-         else if (obj != null) {
 
-             i = item || 0; //选择第几个
 
-             _length = item + 1 || this.length; //长度
 
-             //循环的设置值
 
-             for (i; i < _length; i++) {
 
-                 for (k = 0; k < U.select.EVENTS.length; k++) {
 
-                     if (U.select.EVENTS[k].element == this[i] &&
 
-                         U.select.EVENTS[k].event == obj &&
 
-                         (value == null || U.select.EVENTS[k].fun == value)) {
 
-                         U.UF.EV.delElementEvent(obj, this[i], U.select.EVENTS[k].fun); //添加事件绑定
 
-                         U.select.EVENTS.splice(k, 1);
 
-                         k--;
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         //如果没有传key和value去移除,那么就移除元素所有绑定的事件
 
-         else {
 
-             i = item || 0; //选择第几个
 
-             _length = item + 1 || this.length; //长度
 
-             for (i; i < _length; i++) {
 
-                 for (k = 0; k < U.select.EVENTS.length; k++) {
 
-                     if (U.select.EVENTS[k].element == this[i]) {
 
-                         U.UF.EV.delElementEvent(U.select.EVENTS[k].event, this[i], U.select.EVENTS[k].fun); //添加事件绑定
 
-                         U.select.EVENTS.splice(k, 1);
 
-                         k--;
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         return this;
 
-     }
 
- }
 
- //#endregion
 
 
  |