/*! @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 ? '

' + (titype ? config.title[0] : config.title) + '

' : ''; }()); //按钮区域 var button = (function () { typeof config.btn === 'string' && (config.btn = [config.btn]); var btns = (config.btn || []).length, btndom; if (btns === 0 || !config.btn) { return ''; } btndom = '' + config.btn[0] + '' if (btns === 2) { btndom = '' + config.btn[1] + '' + btndom; } return '
' + btndom + '
'; }()); 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 = '

' + (config.content || '') + '

'; } if (config.skin) config.anim = 'up'; if (config.skin === 'msg') config.shade = false; layerbox.innerHTML = (config.shade ? '
' : '') + '
' + '
' + '
' + title + '
' + config.content + '
' + button + '
' + '
' + '
'; 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);