/*! @Name:layer mobile v2.0 弹层组件移动版 @Author:贤心 @Site:http://layer.layui.com/mobie/ @License:LGPL */ ;!function(win){ "use strict"; var doc = document, query = 'querySelectorAll', claname = 'getElementsByClassName', S = function(s){ return doc[query](s); }; //默认配置 var config = { type: 0 ,shade: true ,shadeClose: true ,fixed: true ,anim: 'scale' //默认动画类型 }; var ready = { extend: function(obj){ var newobj = JSON.parse(JSON.stringify(config)); for(var i in obj){ newobj[i] = obj[i]; } return newobj; }, timer: {}, end: {} }; //点触事件 ready.touch = function(elem, fn){ elem.addEventListener('click', function(e){ fn.call(this, e); }, false); }; var index = 0, classs = ['layui-m-layer'], Layer = function(options){ var that = this; that.config = ready.extend(options); that.view(); }; Layer.prototype.view = function(){ var that = this, config = that.config, layerbox = doc.createElement('div'); that.id = layerbox.id = classs[0] + index; layerbox.setAttribute('class', classs[0] + ' ' + classs[0]+(config.type || 0)); layerbox.setAttribute('index', index); //标题区域 var title = (function(){ var titype = typeof config.title === 'object'; return config.title ? '<h3 style="'+ (titype ? config.title[1] : '') +'">'+ (titype ? config.title[0] : config.title) +'</h3>' : ''; }()); //按钮区域 var button = (function(){ typeof config.btn === 'string' && (config.btn = [config.btn]); var btns = (config.btn || []).length, btndom; if(btns === 0 || !config.btn){ return ''; } btndom = '<span yes type="1">'+ config.btn[0] +'</span>' if(btns === 2){ btndom = '<span no type="0">'+ config.btn[1] +'</span>' + btndom; } return '<div class="layui-m-layerbtn">'+ btndom + '</div>'; }()); if(!config.fixed){ config.top = config.hasOwnProperty('top') ? config.top : 100; config.style = config.style || ''; config.style += ' top:'+ ( doc.body.scrollTop + config.top) + 'px'; } if(config.type === 2){ config.content = '<i></i><i class="layui-m-layerload"></i><i></i><p>'+ (config.content||'') +'</p>'; } if(config.skin) config.anim = 'up'; if(config.skin === 'msg') config.shade = false; layerbox.innerHTML = (config.shade ? '<div '+ (typeof config.shade === 'string' ? 'style="'+ config.shade +'"' : '') +' class="layui-m-layershade"></div>' : '') +'<div class="layui-m-layermain" '+ (!config.fixed ? 'style="position:static;"' : '') +'>' +'<div class="layui-m-layersection">' +'<div class="layui-m-layerchild '+ (config.skin ? 'layui-m-layer-' + config.skin + ' ' : '') + (config.className ? config.className : '') + ' ' + (config.anim ? 'layui-m-anim-' + config.anim : '') +'" ' + ( config.style ? 'style="'+config.style+'"' : '' ) +'>' + title +'<div class="layui-m-layercont">'+ config.content +'</div>' + button +'</div>' +'</div>' +'</div>'; if(!config.type || config.type === 2){ var dialogs = doc[claname](classs[0] + config.type), dialen = dialogs.length; if(dialen >= 1){ layer.close(dialogs[0].getAttribute('index')) } } document.body.appendChild(layerbox); var elem = that.elem = S('#'+that.id)[0]; config.success && config.success(elem); that.index = index++; that.action(config, elem); }; Layer.prototype.action = function(config, elem){ var that = this; //自动关闭 if(config.time){ ready.timer[that.index] = setTimeout(function(){ layer.close(that.index); }, config.time*1000); } //确认取消 var btn = function(){ var type = this.getAttribute('type'); if(type == 0){ config.no && config.no(); layer.close(that.index); } else { config.yes ? config.yes(that.index) : layer.close(that.index); } }; if(config.btn){ var btns = elem[claname]('layui-m-layerbtn')[0].children, btnlen = btns.length; for(var ii = 0; ii < btnlen; ii++){ ready.touch(btns[ii], btn); } } //点遮罩关闭 if(config.shade && config.shadeClose){ var shade = elem[claname]('layui-m-layershade')[0]; ready.touch(shade, function(){ layer.close(that.index, config.end); }); } config.end && (ready.end[that.index] = config.end); }; win.layer = { v: '2.0', index: index, //核心方法 open: function(options){ var o = new Layer(options || {}); return o.index; }, close: function(index){ var ibox = S('#'+classs[0]+index)[0]; if(!ibox) return; ibox.innerHTML = ''; doc.body.removeChild(ibox); clearTimeout(ready.timer[index]); delete ready.timer[index]; typeof ready.end[index] === 'function' && ready.end[index](); delete ready.end[index]; }, //关闭所有layer层 closeAll: function(){ var boxs = doc[claname](classs[0]); for(var i = 0, len = boxs.length; i < len; i++){ layer.close((boxs[0].getAttribute('index')|0)); } } }; 'function' == typeof define ? define(function() { return layer; }) : function(){ var js = document.scripts, script = js[js.length - 1], jsPath = script.src; var path = jsPath.substring(0, jsPath.lastIndexOf("/") + 1); //如果合并方式,则需要单独引入layer.css if(script.getAttribute('merge')) return; document.head.appendChild(function(){ var link = doc.createElement('link'); link.href = path + 'need/layer.css?2.0'; link.type = 'text/css'; link.rel = 'styleSheet' link.id = 'layermcss'; return link; }()); }(); }(window);