123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- layui.define(['element'], function(exports){
- var element = layui.element(),
- $ = layui.jquery,
- layer = parent.layer === undefined ? layui.layer : parent.layer,
- module_name = 'navtab',
- globalTabIdIndex = 0,
- LarryTab = function(){
- this.config ={
- elem: undefined,
- closed: true
- };
- };
- var ELEM = {};
- /**
- * [参数设置 options]
- */
- LarryTab.prototype.set = function(options){
- var _this = this;
- $.extend(true, _this.config, options);
- return _this;
- };
- /**
- * [init 对象初始化]
- * @return {[type]} [返回对象初始化结果]
- */
- LarryTab.prototype.init = function(){
- var _this = this;
- var _config = _this.config;
- if(typeof(_config.elem) !== 'string' && typeof(_config.elem) !== 'object') {
- layer.alert('Tab选项卡错误提示: elem参数未定义或设置出错,具体设置格式请参考文档API.');
- }
- var $container;
- if(typeof(_config.elem) === 'string') {
- $container = $('' + _config.elem + '');
- //console.log($container);
- }
- if(typeof(_config.elem) === 'object') {
- $container = _config.elem;
- }
- if($container.length === 0) {
- layer.alert('Tab选项卡错误提示:找不到elem参数配置的容器,请检查.');
- }
- var filter = $container.attr('lay-filter');
- if(filter === undefined || filter === '') {
- layer.alert('Tab选项卡错误提示:请为elem容器设置一个lay-filter过滤器');
- }
- _config.elem = $container;
- ELEM.titleBox = $container.children('ul.layui-tab-title');
- ELEM.contentBox = $container.children('div.layui-tab-content');
- ELEM.tabFilter = filter;
- return _this;
- };
- /**
- * [exists 在layui-tab中检查对应layui-tab-title是否存在,如果存在则返回索引值,不存在返回-1]
- * @param {[type]} title [description]
- * @return {[type]} [description]
- */
- LarryTab.prototype.exists = function(title){
- var _this = ELEM.titleBox === undefined ? this.init() : this,
- tabIndex = -1;
- ELEM.titleBox.find('li').each(function(i, e) {
- var $em = $(this).children('em');
- if($em.text() === title) {
- tabIndex = i;
- };
- });
- return tabIndex;
- };
- /**
- * [tabAdd 增加选项卡,如果已存在则增加this样式]
- * @param {[type]} data [description]
- * @return {[type]} [description]
- */
- LarryTab.prototype.tabAdd = function(data){
- var _this = this;
- var tabIndex = _this.exists(data.title);
- // 若不存在
- if(tabIndex === -1){
- globalTabIdIndex++;
- var content = '<iframe src="' + data.href + '" data-id="' + globalTabIdIndex + '" class="larry-iframe"></iframe>';
- var title = '';
- // 若icon有定义
- if(data.icon !== undefined){
- if(data.icon.indexOf('fa-') !== -1) {
- title += '<i class="' + data.icon + '"></i>';
- } else {
- title += '<i class="layui-icon ">' + data.icon + '</i>';
- }
- }
- title += '<em>' + data.title + '</em>';
- if(_this.config.closed) {
- title += '<i class="layui-icon layui-unselect layui-tab-close" data-id="' + globalTabIdIndex + '">ဆ</i>';
- }
- //添加tab
- element.tabAdd(ELEM.tabFilter, {
- title: title,
- content: content
- });
- //iframe 自适应
- ELEM.contentBox.find('iframe[data-id=' + globalTabIdIndex + ']').each(function() {
- $(this).height(ELEM.contentBox.height());
- });
- if(_this.config.closed) {
- //监听关闭事件
- ELEM.titleBox.find('li').children('i.layui-tab-close[data-id=' + globalTabIdIndex + ']').on('click', function() {
- element.tabDelete(ELEM.tabFilter, $(this).parent('li').index()).init();
- });
- };
- //切换到当前打开的选项卡
- element.tabChange(ELEM.tabFilter, ELEM.titleBox.find('li').length - 1);
- }else {
- element.tabChange(ELEM.tabFilter, tabIndex);
- }
- };
- var navtab = new LarryTab();
- exports(module_name, function(options) {
- return navtab.set(options);
- });
- });
|