tab.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626
  1. layui.define(['jquery', 'element'], function(exports) {
  2. "use strict";
  3. var MOD_NAME = 'tab',
  4. $ = layui.jquery,
  5. element = layui.element;
  6. var pearTab = function(opt) {
  7. this.option = opt;
  8. };
  9. var tabData = new Array();
  10. var tabDataCurrent = 0;
  11. pearTab.prototype.render = function(opt) {
  12. var option = {
  13. elem: opt.elem,
  14. data: opt.data,
  15. tool: opt.tool,
  16. roll: opt.roll,
  17. index: opt.index,
  18. width: opt.width,
  19. height: opt.height,
  20. tabMax: opt.tabMax,
  21. session: opt.session ? opt.session : false,
  22. closeEvent: opt.closeEvent,
  23. success: opt.success ? opt.success : function(id) {}
  24. }
  25. if (option.session) {
  26. if (sessionStorage.getItem(option.elem + "-pear-tab-data") != null) {
  27. tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data"));
  28. option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data"));
  29. tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-data-current");
  30. tabData.forEach(function(item, index) {
  31. if (item.id == tabDataCurrent) {
  32. option.index = index;
  33. }
  34. })
  35. } else {
  36. tabData = opt.data;
  37. }
  38. }
  39. var lastIndex;
  40. var tab = createTab(option);
  41. $("#" + option.elem).html(tab);
  42. $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function() {
  43. rollPage("left", option);
  44. })
  45. $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function() {
  46. rollPage("right", option);
  47. })
  48. element.init();
  49. toolEvent(option);
  50. $("#" + option.elem).width(opt.width);
  51. $("#" + option.elem).height(opt.height);
  52. $("#" + option.elem).css({
  53. position: "relative"
  54. });
  55. closeEvent(option);
  56. option.success(sessionStorage.getItem(option.elem + "-pear-tab-data-current"));
  57. $("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title").on("contextmenu", "li", function(e) {
  58. // 获取当前元素位置
  59. var top = e.clientY;
  60. var left = e.clientX;
  61. var currentId = $(this).attr("lay-id");
  62. var menu = "<ul><li class='item' id='" + option.elem + "closeThis'>关闭当前</li><li class='item' id='" + option.elem +
  63. "closeOther'>关闭其他</li><li class='item' id='" + option.elem + "closeAll'>关闭所有</li></ul>";
  64. // 初始化
  65. layer.open({
  66. type: 1,
  67. title: false,
  68. shade: false,
  69. skin: 'pear-tab-menu',
  70. closeBtn: false,
  71. area: ['100px', '108px'],
  72. fixed: true,
  73. offset: [top, left],
  74. content: menu, //iframe的url,
  75. success: function(layero, index) {
  76. layer.close(lastIndex);
  77. lastIndex = index;
  78. menuEvent(option, index);
  79. var timer;
  80. $(layero).on('mouseout', function() {
  81. timer = setTimeout(function() {
  82. layer.close(index);
  83. }, 30)
  84. });
  85. $(layero).on('mouseover', function() {
  86. clearTimeout(timer);
  87. });
  88. // 清除 item 右击
  89. $(layero).on('contextmenu', function() {
  90. return false;
  91. })
  92. }
  93. });
  94. return false;
  95. })
  96. return new pearTab(option);
  97. }
  98. pearTab.prototype.click = function(callback) {
  99. var elem = this.option.elem;
  100. var option = this.option;
  101. element.on('tab(' + this.option.elem + ')', function(data) {
  102. var id = $("#" + elem + " .layui-tab-title .layui-this").attr("lay-id");
  103. sessionStorage.setItem(option.elem + "-pear-tab-data-current", id);
  104. callback(id);
  105. });
  106. }
  107. pearTab.prototype.positionTab = function() {
  108. var $tabTitle = $('.layui-tab[lay-filter=' + this.option.elem + '] .layui-tab-title');
  109. var autoLeft = 0;
  110. $tabTitle.children("li").each(function() {
  111. if ($(this).hasClass('layui-this')) {
  112. return false;
  113. } else {
  114. autoLeft += $(this).outerWidth();
  115. }
  116. });
  117. $tabTitle.animate({
  118. scrollLeft: autoLeft - $tabTitle.width() / 3
  119. }, 200);
  120. }
  121. pearTab.prototype.clear = function() {
  122. sessionStorage.removeItem(this.option.elem + "-pear-tab-data");
  123. sessionStorage.removeItem(this.option.elem + "-pear-tab-data-current");
  124. }
  125. pearTab.prototype.addTab = function(opt) {
  126. var title = '';
  127. if (opt.close) {
  128. title += '<span class="pear-tab-active"></span><span class="able-close">' + opt.title +
  129. '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>';
  130. } else {
  131. title += '<span class="pear-tab-active"></span><span class="disable-close">' + opt.title +
  132. '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>';
  133. }
  134. element.tabAdd(this.option.elem, {
  135. title: title,
  136. content: '<iframe id="' + opt.id + '" data-frameid="' + opt.id + '" scrolling="auto" frameborder="0" src="' +
  137. opt.url + '" style="width:100%;height:100%;"></iframe>',
  138. id: opt.id
  139. });
  140. tabData.push(opt);
  141. sessionStorage.setItem(this.option.elem + "-pear-tab-data", JSON.stringify(tabData));
  142. sessionStorage.setItem(this.option.elem + "-pear-tab-data-current", opt.id);
  143. element.tabChange(this.option.elem, opt.id);
  144. }
  145. var index = 0;
  146. // 根据过滤 filter 标识, 删除指定选项卡
  147. pearTab.prototype.delTabByElem = function(elem, id, callback) {
  148. var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "']");
  149. if (currentTab.find("span").is(".able-close")) {
  150. tabDelete(elem, id, callback);
  151. }
  152. }
  153. // 根据过滤 filter 标识, 删除其他选项卡
  154. pearTab.prototype.delOtherTabByElem = function(elem, callback) {
  155. var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr("lay-id");
  156. var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li");
  157. $.each(tabtitle, function(i) {
  158. if ($(this).attr("lay-id") != currentId) {
  159. if ($(this).find("span").is(".able-close")) {
  160. tabDelete(elem, $(this).attr("lay-id"), callback);
  161. }
  162. }
  163. })
  164. }
  165. // 根据过滤 filter 标识, 删除全部选项卡
  166. pearTab.prototype.delAllTabByElem = function(elem, callback) {
  167. var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr("lay-id");
  168. var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li");
  169. $.each(tabtitle, function(i) {
  170. if ($(this).find("span").is(".able-close")) {
  171. tabDelete(elem, $(this).attr("lay-id"), callback);
  172. }
  173. })
  174. }
  175. // 根据过滤 filter 标识, 删除当前选项卡
  176. pearTab.prototype.delCurrentTabByElem = function(elem, callback) {
  177. var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this");
  178. if (currentTab.find("span").is(".able-close")) {
  179. var currentId = currentTab.attr("lay-id");
  180. tabDelete(elem, currentId, callback);
  181. }
  182. }
  183. // 通过过滤 filter 标识, 新增标签页
  184. pearTab.prototype.addTabOnlyByElem = function(elem, opt, time) {
  185. var title = '';
  186. if (opt.close) {
  187. title += '<span class="pear-tab-active"></span><span class="able-close">' + opt.title +
  188. '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>'
  189. } else {
  190. title += '<span class="pear-tab-active"></span><span class="disable-close">' + opt.title +
  191. '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>'
  192. }
  193. if ($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]").length <= 0) {
  194. if (time != false && time != 0) {
  195. var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' +
  196. '<div class="ball-loader">' +
  197. '<span></span><span></span><span></span><span></span>' +
  198. '</div>' +
  199. '</div>'
  200. $("#" + elem).find(".pear-tab").append(load);
  201. var pearLoad = $("#" + elem).find("#pear-tab-loading" + index);
  202. pearLoad.css({
  203. display: "block"
  204. });
  205. setTimeout(function() {
  206. pearLoad.fadeOut(500);
  207. }, time);
  208. index++;
  209. }
  210. element.tabAdd(elem, {
  211. title: title,
  212. content: '<iframe id="' + opt.id + '" data-frameid="' + opt.id + '" scrolling="auto" frameborder="0" src="' +
  213. opt.url + '" style="width:100%;height:100%;"></iframe>',
  214. id: opt.id
  215. });
  216. tabData.push(opt);
  217. sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
  218. } else {
  219. var isData = false;
  220. $.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function() {
  221. if ($(this).attr("lay-id") == opt.id) {
  222. isData = true;
  223. }
  224. })
  225. if (isData == false) {
  226. if (time != false && time != 0) {
  227. var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' +
  228. '<div class="ball-loader">' +
  229. '<span></span><span></span><span></span><span></span>' +
  230. '</div>' +
  231. '</div>'
  232. $("#" + elem).find(".pear-tab").append(load);
  233. var pearLoad = $("#" + elem).find("#pear-tab-loading" + index);
  234. pearLoad.css({
  235. display: "block"
  236. });
  237. setTimeout(function() {
  238. pearLoad.fadeOut(500);
  239. }, time);
  240. index++;
  241. }
  242. element.tabAdd(elem, {
  243. title: title,
  244. content: '<iframe id="' + opt.id + '" data-frameid="' + opt.id + '" scrolling="auto" frameborder="0" src="' +
  245. opt.url + '" style="width:100%;height:100%;"></iframe>',
  246. id: opt.id
  247. });
  248. tabData.push(opt);
  249. sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
  250. }
  251. }
  252. sessionStorage.setItem(elem + "-pear-tab-data-current", opt.id);
  253. element.tabChange(elem, opt.id);
  254. }
  255. /** 添 加 唯 一 选 项 卡 */
  256. pearTab.prototype.addTabOnly = function(opt, time) {
  257. var title = '';
  258. if (opt.close) {
  259. title += '<span class="pear-tab-active"></span><span class="able-close">' + opt.title +
  260. '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>';
  261. } else {
  262. title += '<span class="pear-tab-active"></span><span class="disable-close">' + opt.title +
  263. '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>';
  264. }
  265. if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length <= 0) {
  266. if (time != false && time != 0) {
  267. var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' +
  268. '<div class="ball-loader">' +
  269. '<span></span><span></span><span></span><span></span>' +
  270. '</div>' +
  271. '</div>';
  272. $("#" + this.option.elem).find(".pear-tab").append(load);
  273. var pearLoad = $("#" + this.option.elem).find("#pear-tab-loading" + index);
  274. pearLoad.css({
  275. display: "block"
  276. });
  277. setTimeout(function() {
  278. pearLoad.fadeOut(500);
  279. }, time);
  280. index++;
  281. }
  282. element.tabAdd(this.option.elem, {
  283. title: title,
  284. content: '<iframe id="' + opt.id + '" data-frameid="' + opt.id + '" scrolling="auto" frameborder="0" src="' +
  285. opt.url + '" style="width:100%;height:100%;"></iframe>',
  286. id: opt.id
  287. });
  288. tabData.push(opt);
  289. sessionStorage.setItem(this.option.elem + "-pear-tab-data", JSON.stringify(tabData));
  290. sessionStorage.setItem(this.option.elem + "-pear-tab-data-current", opt.id);
  291. } else {
  292. var isData = false;
  293. $.each($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]"), function() {
  294. if ($(this).attr("lay-id") == opt.id) {
  295. isData = true;
  296. }
  297. })
  298. if (isData == false) {
  299. if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length >= this.option.tabMax) {
  300. layer.msg("最多打开" + this.option.tabMax + "个标签页", {
  301. icon: 2,
  302. time: 1000,
  303. shift: 6
  304. });
  305. return false;
  306. }
  307. if (time != false && time != 0) {
  308. var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' +
  309. '<div class="ball-loader">' +
  310. '<span></span><span></span><span></span><span></span>' +
  311. '</div>' +
  312. '</div>'
  313. $("#" + this.option.elem).find(".pear-tab").append(load);
  314. var pearLoad = $("#" + this.option.elem).find("#pear-tab-loading" + index);
  315. pearLoad.css({
  316. display: "block"
  317. });
  318. setTimeout(function() {
  319. pearLoad.fadeOut(500);
  320. }, time);
  321. index++;
  322. }
  323. element.tabAdd(this.option.elem, {
  324. title: title,
  325. content: '<iframe id="' + opt.id + '" data-frameid="' + opt.id + '" scrolling="auto" frameborder="0" src="' +
  326. opt.url + '" style="width:100%;height:100%;"></iframe>',
  327. id: opt.id
  328. });
  329. tabData.push(opt);
  330. sessionStorage.setItem(this.option.elem + "-pear-tab-data", JSON.stringify(tabData));
  331. sessionStorage.setItem(this.option.elem + "-pear-tab-data-current", opt.id);
  332. }
  333. }
  334. element.tabChange(this.option.elem, opt.id);
  335. sessionStorage.setItem(this.option.elem + "-pear-tab-data-current", opt.id);
  336. }
  337. // 刷 新 指 定 的 选 项 卡
  338. pearTab.prototype.refresh = function(time) {
  339. // 刷 新 指 定 的 选 项 卡
  340. if (time != false && time != 0) {
  341. var load = '<div id="pear-tab-loading' + index + '" class="pear-tab-loading">' +
  342. '<div class="ball-loader">' +
  343. '<span></span><span></span><span></span><span></span>' +
  344. '</div>' +
  345. '</div>'
  346. var elem = this.option.elem;
  347. $("#" + this.option.elem).find(".pear-tab").append(load);
  348. var pearLoad = $("#" + this.option.elem).find("#pear-tab-loading" + index);
  349. pearLoad.css({
  350. display: "block"
  351. });
  352. index++;
  353. setTimeout(function() {
  354. pearLoad.fadeOut(500, function() {
  355. pearLoad.remove();
  356. });
  357. }, time);
  358. $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-content .layui-show").find("iframe")[0].contentWindow
  359. .location.reload(true);
  360. } else {
  361. $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show").find("iframe")[0].contentWindow
  362. .location.reload(true);
  363. }
  364. }
  365. function tabDelete(elem, id, callback, option) {
  366. //根据 elem id 来删除指定的 layui title li
  367. var tabTitle = $(".layui-tab[lay-filter='" + elem + "']").find(".layui-tab-title");
  368. // 删除指定 id 的 title
  369. var removeTab = tabTitle.find("li[lay-id='" + id + "']");
  370. var nextNode = removeTab.next("li");
  371. if (!removeTab.hasClass("layui-this")) {
  372. removeTab.remove();
  373. var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']").parent();
  374. tabContent.remove();
  375. tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data"));
  376. tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current");
  377. tabData = tabData.filter(function(item) {
  378. return item.id != id;
  379. })
  380. sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
  381. return false;
  382. }
  383. var currId;
  384. if (nextNode.length) {
  385. nextNode.addClass("layui-this");
  386. currId = nextNode.attr("lay-id");
  387. $("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show");
  388. } else {
  389. var prevNode = removeTab.prev("li");
  390. prevNode.addClass("layui-this");
  391. currId = prevNode.attr("lay-id");
  392. $("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show");
  393. }
  394. callback(currId);
  395. tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data"));
  396. tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current");
  397. tabData = tabData.filter(function(item) {
  398. return item.id != id;
  399. })
  400. sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
  401. sessionStorage.setItem(elem + "-pear-tab-data-current", currId);
  402. removeTab.remove();
  403. // 删除 content
  404. var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']").parent();
  405. // 删除
  406. tabContent.remove();
  407. }
  408. function createTab(option) {
  409. var type = "";
  410. var types = option.type + " ";
  411. if (option.roll == true) {
  412. type = "layui-tab-roll";
  413. }
  414. if (option.tool != false) {
  415. type = "layui-tab-tool";
  416. }
  417. if (option.roll == true && option.tool != false) {
  418. type = "layui-tab-rollTool";
  419. }
  420. var tab = '<div class="pear-tab ' + types + type + ' layui-tab" lay-filter="' + option.elem +
  421. '" lay-allowClose="true">';
  422. var title = '<ul class="layui-tab-title">';
  423. var content = '<div class="layui-tab-content">';
  424. var control =
  425. '<div class="layui-tab-control"><li class="layui-tab-prev layui-icon layui-icon-left"></li><li class="layui-tab-next layui-icon layui-icon-right"></li><li class="layui-tab-tool layui-icon layui-icon-down"><ul class="layui-nav" lay-filter=""><li class="layui-nav-item"><a href="javascript:;"></a><dl class="layui-nav-child">';
  426. // 处 理 选 项 卡 头 部
  427. var index = 0;
  428. $.each(option.data, function(i, item) {
  429. var TitleItem = '';
  430. if (option.index == index) {
  431. TitleItem += '<li lay-id="' + item.id + '" class="layui-this"><span class="pear-tab-active"></span>';
  432. } else {
  433. TitleItem += '<li lay-id="' + item.id + '" ><span class="pear-tab-active"></span>';
  434. }
  435. if (item.close) {
  436. // 当 前 选 项 卡 可 以 关 闭
  437. TitleItem += '<span class="able-close">' + item.title + '</span>';
  438. } else {
  439. // 当 前 选 项 卡 不 允 许 关 闭
  440. TitleItem += '<span class="disable-close">' + item.title + '</span>';
  441. }
  442. TitleItem += '<i class="layui-icon layui-unselect layui-tab-close">ဆ</i></li>';
  443. title += TitleItem;
  444. if (option.index == index) {
  445. // 处 理 显 示 内 容
  446. content += '<div class="layui-show layui-tab-item"><iframe id="' + item.id + '" data-frameid="' + item.id +
  447. '" src="' + item.url +
  448. '" frameborder="no" border="0" marginwidth="0" marginheight="0" style="width: 100%;height: 100%;"></iframe></div>'
  449. } else {
  450. // 处 理 显 示 内 容
  451. content += '<div class="layui-tab-item"><iframe id="' + item.id + '" data-frameid="' + item.id + '" src="' +
  452. item.url +
  453. '" frameborder="no" border="0" marginwidth="0" marginheight="0" style="width: 100%;height: 100%;"></iframe></div>'
  454. }
  455. index++;
  456. });
  457. title += '</ul>';
  458. content += '</div>';
  459. control += '<dd id="closeThis"><a href="#">关 闭 当 前</a></dd>'
  460. control += '<dd id="closeOther"><a href="#">关 闭 其 他</a></dd>'
  461. control += '<dd id="closeAll"><a href="#">关 闭 全 部</a></dd>'
  462. control += '</dl></li></ul></li></div>';
  463. tab += title;
  464. tab += control;
  465. tab += content;
  466. tab += '</div>';
  467. tab += ''
  468. return tab;
  469. }
  470. function rollPage(d, option) {
  471. var $tabTitle = $('#' + option.elem + ' .layui-tab-title');
  472. var left = $tabTitle.scrollLeft();
  473. if ('left' === d) {
  474. $tabTitle.animate({
  475. scrollLeft: left - 450
  476. }, 200);
  477. } else {
  478. $tabTitle.animate({
  479. scrollLeft: left + 450
  480. }, 200);
  481. }
  482. }
  483. function closeEvent(option) {
  484. $(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function() {
  485. var layid = $(this).parent().attr("lay-id");
  486. tabDelete(option.elem, layid, option.closeEvent, option);
  487. })
  488. }
  489. function menuEvent(option, index) {
  490. $("#" + option.elem + "closeThis").click(function() {
  491. var currentTab = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this");
  492. if (currentTab.find("span").is(".able-close")) {
  493. var currentId = currentTab.attr("lay-id");
  494. tabDelete(option.elem, currentId, option.closeEvent, option);
  495. } else {
  496. layer.msg("当前页面不允许关闭", {
  497. icon: 3,
  498. time: 800
  499. })
  500. }
  501. layer.close(index);
  502. })
  503. $("#" + option.elem + "closeOther").click(function() {
  504. var currentId = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this").attr("lay-id");
  505. var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
  506. $.each(tabtitle, function(i) {
  507. if ($(this).attr("lay-id") != currentId) {
  508. if ($(this).find("span").is(".able-close")) {
  509. tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
  510. }
  511. }
  512. })
  513. layer.close(index);
  514. })
  515. $("#" + option.elem + "closeAll").click(function() {
  516. var currentId = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this").attr("lay-id");
  517. var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
  518. $.each(tabtitle, function(i) {
  519. if ($(this).find("span").is(".able-close")) {
  520. tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
  521. }
  522. })
  523. layer.close(index);
  524. })
  525. }
  526. function toolEvent(option) {
  527. $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function() {
  528. var currentTab = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this");
  529. if (currentTab.find("span").is(".able-close")) {
  530. var currentId = currentTab.attr("lay-id");
  531. tabDelete(option.elem, currentId, option.closeEvent, option);
  532. } else {
  533. layer.msg("当前页面不允许关闭", {
  534. icon: 3,
  535. time: 800
  536. })
  537. }
  538. })
  539. $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function() {
  540. var currentId = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this").attr("lay-id");
  541. var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
  542. $.each(tabtitle, function(i) {
  543. if ($(this).attr("lay-id") != currentId) {
  544. if ($(this).find("span").is(".able-close")) {
  545. tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
  546. }
  547. }
  548. })
  549. })
  550. $("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function() {
  551. var currentId = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title .layui-this").attr("lay-id");
  552. var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
  553. $.each(tabtitle, function(i) {
  554. if ($(this).find("span").is(".able-close")) {
  555. tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
  556. }
  557. })
  558. })
  559. }
  560. exports(MOD_NAME, new pearTab());
  561. })