ui
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
layui.define(['jquery', 'element'], function(exports) {
|
||||
layui.define(['jquery', 'element'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
var MOD_NAME = 'tab',
|
||||
$ = layui.jquery,
|
||||
element = layui.element;
|
||||
|
||||
var pearTab = function(opt) {
|
||||
var pearTab = function (opt) {
|
||||
this.option = opt;
|
||||
};
|
||||
|
||||
@@ -13,7 +13,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
var tabDataCurrent = 0;
|
||||
var contextTabDOM;
|
||||
|
||||
pearTab.prototype.render = function(opt) {
|
||||
pearTab.prototype.render = function (opt) {
|
||||
|
||||
var option = {
|
||||
elem: opt.elem,
|
||||
@@ -27,7 +27,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
session: opt.session ? opt.session : false,
|
||||
preload: opt.preload ? opt.preload : false,
|
||||
closeEvent: opt.closeEvent,
|
||||
success: opt.success ? opt.success : function(id) {}
|
||||
success: opt.success ? opt.success : function (id) { }
|
||||
}
|
||||
|
||||
if (option.session) {
|
||||
@@ -35,7 +35,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data"));
|
||||
option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data"));
|
||||
tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-data-current");
|
||||
tabData.forEach(function(item, index) {
|
||||
tabData.forEach(function (item, index) {
|
||||
if (item.id == tabDataCurrent) {
|
||||
option.index = index;
|
||||
}
|
||||
@@ -48,10 +48,10 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
var lastIndex;
|
||||
var tab = createTab(option);
|
||||
$("#" + option.elem).html(tab);
|
||||
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function() {
|
||||
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function () {
|
||||
rollPage("left", option);
|
||||
})
|
||||
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function() {
|
||||
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function () {
|
||||
rollPage("right", option);
|
||||
})
|
||||
element.init();
|
||||
@@ -66,7 +66,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
option.success(sessionStorage.getItem(option.elem + "-pear-tab-data-current"));
|
||||
|
||||
$("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title").on("contextmenu", "li",
|
||||
function(e) {
|
||||
function (e) {
|
||||
// 获取当前元素位置
|
||||
var top = e.clientY;
|
||||
var left = e.clientX;
|
||||
@@ -95,23 +95,23 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
isOutAnim: false,
|
||||
offset: [top, left],
|
||||
content: menu, //iframe的url,
|
||||
success: function(layero, index) {
|
||||
success: function (layero, index) {
|
||||
layer.close(lastIndex);
|
||||
lastIndex = index;
|
||||
menuEvent(option, index);
|
||||
var timer;
|
||||
$(layero).on('mouseout', function() {
|
||||
timer = setTimeout(function() {
|
||||
$(layero).on('mouseout', function () {
|
||||
timer = setTimeout(function () {
|
||||
layer.close(index);
|
||||
}, 30)
|
||||
});
|
||||
|
||||
$(layero).on('mouseover', function() {
|
||||
$(layero).on('mouseover', function () {
|
||||
clearTimeout(timer);
|
||||
});
|
||||
|
||||
// 清除 item 右击
|
||||
$(layero).on('contextmenu', function() {
|
||||
$(layero).on('contextmenu', function () {
|
||||
return false;
|
||||
})
|
||||
|
||||
@@ -124,10 +124,10 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
return new pearTab(option);
|
||||
}
|
||||
|
||||
pearTab.prototype.click = function(callback) {
|
||||
pearTab.prototype.click = function (callback) {
|
||||
var elem = this.option.elem;
|
||||
var option = this.option;
|
||||
element.on('tab(' + this.option.elem + ')', function(data) {
|
||||
element.on('tab(' + this.option.elem + ')', function (data) {
|
||||
var id = $("#" + elem + " .layui-tab-title .layui-this").attr("lay-id");
|
||||
sessionStorage.setItem(option.elem + "-pear-tab-data-current", id);
|
||||
if (!option.preload) {
|
||||
@@ -136,7 +136,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
var iframeUrl = $iframe.attr("src");
|
||||
if (!iframeUrl || iframeUrl === "about:blank") {
|
||||
// 获取 url 并重载
|
||||
tabData.forEach(function(item, index) {
|
||||
tabData.forEach(function (item, index) {
|
||||
if (item.id === id) {
|
||||
iframeUrl = item.url;
|
||||
}
|
||||
@@ -149,10 +149,10 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
});
|
||||
}
|
||||
|
||||
pearTab.prototype.positionTab = function() {
|
||||
pearTab.prototype.positionTab = function () {
|
||||
var $tabTitle = $('.layui-tab[lay-filter=' + this.option.elem + '] .layui-tab-title');
|
||||
var autoLeft = 0;
|
||||
$tabTitle.children("li").each(function() {
|
||||
$tabTitle.children("li").each(function () {
|
||||
if ($(this).hasClass('layui-this')) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -164,12 +164,12 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
}, 200);
|
||||
}
|
||||
|
||||
pearTab.prototype.clear = function() {
|
||||
pearTab.prototype.clear = function () {
|
||||
sessionStorage.removeItem(this.option.elem + "-pear-tab-data");
|
||||
sessionStorage.removeItem(this.option.elem + "-pear-tab-data-current");
|
||||
}
|
||||
|
||||
pearTab.prototype.addTab = function(opt) {
|
||||
pearTab.prototype.addTab = function (opt) {
|
||||
var title = '';
|
||||
if (opt.close) {
|
||||
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
|
||||
@@ -193,25 +193,25 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
|
||||
var index = 0;
|
||||
// 根据过滤 fliter 标识, 重置选项卡标题
|
||||
pearTab.prototype.changeTabTitleById = function(elem, id, title) {
|
||||
pearTab.prototype.changeTabTitleById = function (elem, id, title) {
|
||||
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id +
|
||||
"'] .title");
|
||||
currentTab.html(title);
|
||||
}
|
||||
|
||||
// 根据过滤 filter 标识, 删除指定选项卡
|
||||
pearTab.prototype.delTabByElem = function(elem, id, callback) {
|
||||
pearTab.prototype.delTabByElem = function (elem, id, callback) {
|
||||
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "']");
|
||||
if (currentTab.find("span").is(".able-close")) {
|
||||
tabDelete(elem, id, callback);
|
||||
}
|
||||
}
|
||||
// 根据过滤 filter 标识, 删除其他选项卡
|
||||
pearTab.prototype.delOtherTabByElem = function(elem, callback) {
|
||||
pearTab.prototype.delOtherTabByElem = function (elem, callback) {
|
||||
var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr(
|
||||
"lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function(i) {
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).attr("lay-id") != currentId) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(elem, $(this).attr("lay-id"), callback);
|
||||
@@ -221,18 +221,18 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
}
|
||||
|
||||
// 根据过滤 filter 标识, 删除全部选项卡
|
||||
pearTab.prototype.delAllTabByElem = function(elem, callback) {
|
||||
pearTab.prototype.delAllTabByElem = function (elem, callback) {
|
||||
var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr(
|
||||
"lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function(i) {
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(elem, $(this).attr("lay-id"), callback);
|
||||
}
|
||||
})
|
||||
}
|
||||
// 根据过滤 filter 标识, 删除当前选项卡
|
||||
pearTab.prototype.delCurrentTabByElem = function(elem, callback) {
|
||||
pearTab.prototype.delCurrentTabByElem = function (elem, callback) {
|
||||
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this");
|
||||
if (currentTab.find("span").is(".able-close")) {
|
||||
var currentId = currentTab.attr("lay-id");
|
||||
@@ -241,7 +241,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
}
|
||||
|
||||
// 通过过滤 filter 标识, 新增标签页
|
||||
pearTab.prototype.addTabOnlyByElem = function(elem, opt, time) {
|
||||
pearTab.prototype.addTabOnlyByElem = function (elem, opt, time) {
|
||||
var title = '';
|
||||
if (opt.close) {
|
||||
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
|
||||
@@ -265,7 +265,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
|
||||
} else {
|
||||
var isData = false;
|
||||
$.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function() {
|
||||
$.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function () {
|
||||
if ($(this).attr("lay-id") == opt.id) {
|
||||
isData = true;
|
||||
}
|
||||
@@ -292,7 +292,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
}
|
||||
|
||||
/** 添 加 唯 一 选 项 卡 */
|
||||
pearTab.prototype.addTabOnly = function(opt, time) {
|
||||
pearTab.prototype.addTabOnly = function (opt, time) {
|
||||
var title = '';
|
||||
if (opt.close) {
|
||||
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
|
||||
@@ -319,7 +319,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
} else {
|
||||
var isData = false;
|
||||
$.each($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]"),
|
||||
function() {
|
||||
function () {
|
||||
if ($(this).attr("lay-id") == opt.id) {
|
||||
isData = true;
|
||||
}
|
||||
@@ -358,7 +358,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
}
|
||||
|
||||
// 刷 新 指 定 的 选 项 卡
|
||||
pearTab.prototype.refresh = function(time) {
|
||||
pearTab.prototype.refresh = function (time) {
|
||||
// 刷 新 指 定 的 选 项 卡
|
||||
var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show")
|
||||
.find("iframe");
|
||||
@@ -385,8 +385,8 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
display: "block"
|
||||
});
|
||||
index++;
|
||||
$iframe.on("load", function() {
|
||||
pearLoad.fadeOut(1000, function() {
|
||||
$iframe.on("load", function () {
|
||||
pearLoad.fadeOut(1000, function () {
|
||||
pearLoad.remove();
|
||||
});
|
||||
})
|
||||
@@ -402,12 +402,12 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
if (!removeTab.hasClass("layui-this")) {
|
||||
removeTab.remove();
|
||||
var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']")
|
||||
.parent();
|
||||
.parent();
|
||||
tabContent.remove();
|
||||
|
||||
tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data"));
|
||||
tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current");
|
||||
tabData = tabData.filter(function(item) {
|
||||
tabData = tabData.filter(function (item) {
|
||||
return item.id != id;
|
||||
})
|
||||
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
|
||||
@@ -428,7 +428,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
callback(currId);
|
||||
tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data"));
|
||||
tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current");
|
||||
tabData = tabData.filter(function(item) {
|
||||
tabData = tabData.filter(function (item) {
|
||||
return item.id != id;
|
||||
})
|
||||
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
|
||||
@@ -463,7 +463,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
|
||||
// 处 理 选 项 卡 头 部
|
||||
var index = 0;
|
||||
$.each(option.data, function(i, item) {
|
||||
$.each(option.data, function (i, item) {
|
||||
var TitleItem = '';
|
||||
if (option.index == index) {
|
||||
TitleItem += '<li lay-id="' + item.id +
|
||||
@@ -531,7 +531,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
}
|
||||
|
||||
function closeEvent(option) {
|
||||
$(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function() {
|
||||
$(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function () {
|
||||
var layid = $(this).parent().attr("lay-id");
|
||||
tabDelete(option.elem, layid, option.closeEvent, option);
|
||||
})
|
||||
@@ -539,7 +539,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
|
||||
function menuEvent(option, index) {
|
||||
|
||||
$("#" + option.elem + "closeThis").click(function() {
|
||||
$("#" + option.elem + "closeThis").click(function () {
|
||||
var currentTab = contextTabDOM;
|
||||
|
||||
if (currentTab.find("span").is(".able-close")) {
|
||||
@@ -554,10 +554,10 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
layer.close(index);
|
||||
})
|
||||
|
||||
$("#" + option.elem + "closeOther").click(function() {
|
||||
$("#" + option.elem + "closeOther").click(function () {
|
||||
var currentId = contextTabDOM.attr("lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function(i) {
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).attr("lay-id") != currentId) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent,
|
||||
@@ -568,10 +568,10 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
layer.close(index);
|
||||
})
|
||||
|
||||
$("#" + option.elem + "closeAll").click(function() {
|
||||
$("#" + option.elem + "closeAll").click(function () {
|
||||
var currentId = contextTabDOM.attr("lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function(i) {
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
|
||||
}
|
||||
@@ -581,7 +581,7 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
}
|
||||
|
||||
function toolEvent(option) {
|
||||
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function() {
|
||||
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function () {
|
||||
var currentTab = $(".layui-tab[lay-filter='" + option.elem +
|
||||
"'] .layui-tab-title .layui-this");
|
||||
if (currentTab.find("span").is(".able-close")) {
|
||||
@@ -595,11 +595,11 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
}
|
||||
})
|
||||
|
||||
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function() {
|
||||
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function () {
|
||||
var currentId = $(".layui-tab[lay-filter='" + option.elem +
|
||||
"'] .layui-tab-title .layui-this").attr("lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function(i) {
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).attr("lay-id") != currentId) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent,
|
||||
@@ -609,11 +609,11 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
})
|
||||
})
|
||||
|
||||
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function() {
|
||||
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function () {
|
||||
var currentId = $(".layui-tab[lay-filter='" + option.elem +
|
||||
"'] .layui-tab-title .layui-this").attr("lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function(i) {
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
|
||||
}
|
||||
@@ -626,10 +626,10 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
var $tabTitle = $('#' + option.elem + ' .layui-tab-title');
|
||||
var mouseScrollStep = 100
|
||||
// 鼠标滚轮
|
||||
$bodyTab.on("mousewheel DOMMouseScroll", function(e) {
|
||||
$bodyTab.on("mousewheel DOMMouseScroll", function (e) {
|
||||
e.originalEvent.preventDefault()
|
||||
var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? "top" :
|
||||
"down")) || // chrome & ie
|
||||
"down")) || // chrome & ie
|
||||
(e.originalEvent.detail && (e.originalEvent.detail > 0 ? "down" : "top")); // firefox
|
||||
var scrollLeft = $tabTitle.scrollLeft();
|
||||
|
||||
@@ -643,11 +643,11 @@ layui.define(['jquery', 'element'], function(exports) {
|
||||
|
||||
// 触摸移动
|
||||
var touchX = 0;
|
||||
$bodyTab.on("touchstart", function(e) {
|
||||
$bodyTab.on("touchstart", function (e) {
|
||||
var touch = e.originalEvent.targetTouches[0];
|
||||
touchX = touch.pageX
|
||||
})
|
||||
$bodyTab.on("touchmove", function(e) {
|
||||
$bodyTab.on("touchmove", function (e) {
|
||||
var event = e.originalEvent;
|
||||
if (event.targetTouches.length > 1) return;
|
||||
event.preventDefault();
|
||||
|
||||
Reference in New Issue
Block a user