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
|