138 lines
3.5 KiB
JavaScript
138 lines
3.5 KiB
JavaScript
|
|
function checkMQ() {
|
|
// 检查移动或桌面设备
|
|
return window.getComputedStyle(document.querySelector('.main-content'), '::before').getPropertyValue('content').replace(/'/g, "").replace(/"/g, "");
|
|
}
|
|
|
|
function addTab(url, id, name) {
|
|
|
|
var size = $('#tabs-list').find('#tab_tab_' + id).length;
|
|
if (size > 0) {
|
|
$.addtabs.add({
|
|
id: id,
|
|
iframeId: id,
|
|
target: "#tabs-list",
|
|
url: app.url(url),
|
|
title: name,
|
|
loadbar: true,
|
|
refresh: true
|
|
});
|
|
} else {
|
|
$.addtabs.add({
|
|
id: id,
|
|
target: "#tabs-list",
|
|
url: app.url(url),
|
|
loadbar: true,
|
|
title: name
|
|
});
|
|
}
|
|
|
|
/*
|
|
// 不刷新页面改变地址
|
|
if(history.replaceState) {
|
|
var i = url.replace(settings.public_url + '/', '');
|
|
history.replaceState(null, '', settings.public_url + '?i=' + i);
|
|
}
|
|
*/
|
|
|
|
if ($('.side-nav').hasClass('nav-is-visible')) {
|
|
var sidebar = $('.side-nav'),
|
|
scroll = $('.nav-scroll'),
|
|
sidebarTrigger = $('.nav-trigger');
|
|
$([sidebar, sidebarTrigger, scroll]).toggleClass('nav-is-visible');
|
|
}
|
|
|
|
// 删除hover样式
|
|
$('.side-nav').find('.hover').removeClass('hover');
|
|
$('.side-nav').find('.selected').removeClass('selected');
|
|
}
|
|
|
|
$(function() {
|
|
|
|
var $body = $('body');
|
|
|
|
$('[data-toggle="addtab"]').on('click', function(event) {
|
|
event.preventDefault();
|
|
// 无ID不触发事件
|
|
var data = $(this).data();
|
|
if(data.id == undefined) {
|
|
return;
|
|
}
|
|
addTab(data.url, data.id, data.name);
|
|
});
|
|
|
|
// 缓存dom元素
|
|
var mainContent = $('.main-content'),
|
|
header = $('.main-header'),
|
|
sidebar = $('.side-nav'),
|
|
scroll = $('.nav-scroll'),
|
|
sidebarTrigger = $('.nav-trigger');
|
|
|
|
// 仅移动 - 当用户单击菜单时打开侧边栏
|
|
sidebarTrigger.on('click', function(event) {
|
|
event.preventDefault();
|
|
$([sidebar, sidebarTrigger, scroll]).toggleClass('nav-is-visible');
|
|
});
|
|
|
|
// 初始化折叠菜单
|
|
var folded = localStorage.getItem("side-folded");
|
|
if (folded === 'on') {
|
|
$body.addClass('side-folded');
|
|
$('.folded').addClass('active');
|
|
}
|
|
|
|
// 折叠左边菜单
|
|
$(document).on('click', "[data-toggle=side-folded]", function(event) {
|
|
event.preventDefault();
|
|
$(this).toggleClass('active');
|
|
$body.toggleClass('side-folded');
|
|
// 保存折叠菜单到本地
|
|
localStorage.setItem("side-folded", $body.hasClass('side-folded') === true ? 'on' : 'off');
|
|
});
|
|
|
|
// 单击项并显示子菜单
|
|
$('.has-children > a').on('click', function(event) {
|
|
|
|
var mq = checkMQ(),
|
|
selectedItem = $(this);
|
|
|
|
if( mq == 'mobile' || mq == 'tablet' ) {
|
|
|
|
event.preventDefault();
|
|
|
|
if (selectedItem.parent('li').hasClass('selected')) {
|
|
selectedItem.parent('li').removeClass('selected');
|
|
} else {
|
|
selectedItem.parent().parent().find('>.has-children.selected').removeClass('selected');
|
|
selectedItem.parent('li').addClass('selected');
|
|
}
|
|
}
|
|
});
|
|
|
|
$('.has-children').on('mouseover mouseout', function(event) {
|
|
|
|
var mq = checkMQ();
|
|
|
|
if (mq == 'desktop') {
|
|
// 鼠标悬浮
|
|
if (event.type == 'mouseover') {
|
|
var wh = $(window).height();
|
|
$(this).addClass('hover');
|
|
var list = $(this).find('ul:visible').not('.fix');
|
|
list.each(function(i) {
|
|
var uh = $(this).height();
|
|
var p = $(this).offset();
|
|
var c = wh - p.top - uh - 25;
|
|
/* 二级菜单和三级菜单高出window */
|
|
if (c < 0) {
|
|
$(this).css({top:c});
|
|
$(this).addClass('fix');
|
|
}
|
|
});
|
|
// 鼠标离开
|
|
} else if(event.type == 'mouseout') {
|
|
$(this).removeClass('hover');
|
|
}
|
|
}
|
|
});
|
|
}); |