123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
-
- layui.define(['element', 'common'], function (exports) {
- var mod_name = 'tab',
- $ = layui.jquery,
- element = layui.element(),
- commom = layui.common,
- globalTabIdIndex = 0,
- Tab = function () {
- this.config = {
- elem: undefined,
- closed: true //是否包含删除按钮
- };
- };
- var ELEM = {};
- /**
- * 参数设置
- * @param {Object} options
- */
- Tab.prototype.set = function (options) {
- var that = this;
- $.extend(true, that.config, options);
- return that;
- };
- /**
- * 初始化
- */
- Tab.prototype.init = function () {
- var that = this;
- var _config = that.config;
- if (typeof (_config.elem) !== 'string' && typeof (_config.elem) !== 'object') {
- common.throwError('Tab error: elem参数未定义或设置出错,具体设置格式请参考文档API.');
- }
- var $container;
- if (typeof (_config.elem) === 'string') {
- $container = $('' + _config.elem + '');
- }
- if (typeof (_config.elem) === 'object') {
- $container = _config.elem;
- }
- if ($container.length === 0) {
- common.throwError('Tab error:找不到elem参数配置的容器,请检查.');
- }
- var filter = $container.attr('lay-filter');
- if (filter === undefined || filter === '') {
- common.throwError('Tab error:请为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 that;
- };
- /**
- * 查询tab是否存在,如果存在则返回索引值,不存在返回-1
- * @param {String} 标题
- */
- Tab.prototype.exists = function (title) {
- var that = ELEM.titleBox === undefined ? this.init() : this,
- tabIndex = -1;
- ELEM.titleBox.find('li').each(function (i, e) {
- var $cite = $(this).children('cite');
- if ($cite.text() === title) {
- tabIndex = i;
- };
- });
- return tabIndex;
- };
- /**
- * 添加选择卡,如果选择卡存在则获取焦点
- * @param {Object} data
- */
- Tab.prototype.tabAdd = function (data) {
- var that = this;
- var tabIndex = that.exists(data.title);
- if (tabIndex === -1) {
- globalTabIdIndex++;
- var content = '<iframe src="' + data.href + '" data-id="' + globalTabIdIndex + '"></iframe>';
- var title = '';
- if (data.icon !== undefined) {
- if (data.icon.indexOf('fa-') !== -1) {
- title += '<i class="' + data.icon + '" aria-hidden="true"></i>';
- } else {
- title += '<i class="layui-icon">' + data.icon + '</i>';
- }
- }
- title += '<cite>' + data.title + '</cite>';
- if (that.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 (that.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);
- }
- };
- Tab.prototype.on = function (events, callback) {
- }
- var tab = new Tab();
- exports(mod_name, function (options) {
- return tab.set(options);
- });
- });
|