| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 | 
$(function () {    //计算元素集合的总宽度    function calSumWidth(elements) {        var width = 0;        $(elements).each(function () {            width += $(this).outerWidth(true);        });        return width;    }    //滚动到指定选项卡    function scrollToTab(element) {        var marginLeftVal = calSumWidth($(element).prevAll()), marginRightVal = calSumWidth($(element).nextAll());        // 可视区域非tab宽度        var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".J_menuTabs"));        //可视区域tab宽度        var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;        //实际滚动宽度        var scrollVal = 0;        if ($(".page-tabs-content").outerWidth() < visibleWidth) {            scrollVal = 0;        } else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {            if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {                scrollVal = marginLeftVal;                var tabElement = element;                while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) {                    scrollVal -= $(tabElement).prev().outerWidth();                    tabElement = $(tabElement).prev();                }            }        } else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {            scrollVal = marginLeftVal - $(element).prev().outerWidth(true);        }        $('.page-tabs-content').animate({            marginLeft: 0 - scrollVal + 'px'        }, "fast");    }    //查看左侧隐藏的选项卡    function scrollTabLeft() {        var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));        // 可视区域非tab宽度        var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".J_menuTabs"));        //可视区域tab宽度        var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;        //实际滚动宽度        var scrollVal = 0;        if ($(".page-tabs-content").width() < visibleWidth) {            return false;        } else {            var tabElement = $(".J_menuTab:first");            var offsetVal = 0;            while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {//找到离当前tab最近的元素                offsetVal += $(tabElement).outerWidth(true);                tabElement = $(tabElement).next();            }            offsetVal = 0;            if (calSumWidth($(tabElement).prevAll()) > visibleWidth) {                while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {                    offsetVal += $(tabElement).outerWidth(true);                    tabElement = $(tabElement).prev();                }                scrollVal = calSumWidth($(tabElement).prevAll());            }        }        $('.page-tabs-content').animate({            marginLeft: 0 - scrollVal + 'px'        }, "fast");    }    //查看右侧隐藏的选项卡    function scrollTabRight() {        var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));        // 可视区域非tab宽度        var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".J_menuTabs"));        //可视区域tab宽度        var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;        //实际滚动宽度        var scrollVal = 0;        if ($(".page-tabs-content").width() < visibleWidth) {            return false;        } else {            var tabElement = $(".J_menuTab:first");            var offsetVal = 0;            while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {//找到离当前tab最近的元素                offsetVal += $(tabElement).outerWidth(true);                tabElement = $(tabElement).next();            }            offsetVal = 0;            while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {                offsetVal += $(tabElement).outerWidth(true);                tabElement = $(tabElement).next();            }            scrollVal = calSumWidth($(tabElement).prevAll());            if (scrollVal > 0) {                $('.page-tabs-content').animate({                    marginLeft: 0 - scrollVal + 'px'                }, "fast");            }        }    }    //通过遍历给菜单项加上data-index属性    $(".J_menuItem").each(function (index) {        if (!$(this).attr('data-index')) {            $(this).attr('data-index', index);        }    });    function menuItem() {        // 获取标识数据        var dataUrl = $(this).attr('href'),            dataIndex = $(this).data('index'),            menuName = $.trim($(this).text()),            flag = true;        if (dataUrl == undefined || $.trim(dataUrl).length == 0)return false;        // 选项卡菜单已存在        $('.J_menuTab').each(function () {            if ($(this).data('id') == dataUrl) {                if (!$(this).hasClass('active')) {                    $(this).addClass('active').siblings('.J_menuTab').removeClass('active');                    scrollToTab(this);                    // 显示tab对应的内容区                    $('.J_mainContent .J_iframe').each(function () {                        if ($(this).data('id') == dataUrl) {                            $(this).show().siblings('.J_iframe').hide();                            return false;                        }                    });                }                flag = false;                return false;            }        });        // 选项卡菜单不存在        if (flag) {            var str = '<a href="javascript:;" class="active J_menuTab" data-id="' + dataUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';            $('.J_menuTab').removeClass('active');            // 添加选项卡对应的iframe            var str1 = '<iframe class="J_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" seamless></iframe>';            $('.J_mainContent').find('iframe.J_iframe').hide().parents('.J_mainContent').append(str1);            //显示loading提示//            var loading = layer.load();////            $('.J_mainContent iframe:visible').load(function () {//                //iframe加载完成后隐藏loading提示//                layer.close(loading);//            });            // 添加选项卡            $('.J_menuTabs .page-tabs-content').append(str);            scrollToTab($('.J_menuTab.active'));        }        return false;    }    $('.J_menuItem').on('click', menuItem);    // 关闭选项卡菜单    function closeTab() {        var closeTabId = $(this).parents('.J_menuTab').data('id');        var currentWidth = $(this).parents('.J_menuTab').width();        // 当前元素处于活动状态        if ($(this).parents('.J_menuTab').hasClass('active')) {            // 当前元素后面有同辈元素,使后面的一个元素处于活动状态            if ($(this).parents('.J_menuTab').next('.J_menuTab').size()) {                var activeId = $(this).parents('.J_menuTab').next('.J_menuTab:eq(0)').data('id');                $(this).parents('.J_menuTab').next('.J_menuTab:eq(0)').addClass('active');                $('.J_mainContent .J_iframe').each(function () {                    if ($(this).data('id') == activeId) {                        $(this).show().siblings('.J_iframe').hide();                        return false;                    }                });                var marginLeftVal = parseInt($('.page-tabs-content').css('margin-left'));                if (marginLeftVal < 0) {                    $('.page-tabs-content').animate({                        marginLeft: (marginLeftVal + currentWidth) + 'px'                    }, "fast");                }                //  移除当前选项卡                $(this).parents('.J_menuTab').remove();                // 移除tab对应的内容区                $('.J_mainContent .J_iframe').each(function () {                    if ($(this).data('id') == closeTabId) {                        $(this).remove();                        return false;                    }                });            }            // 当前元素后面没有同辈元素,使当前元素的上一个元素处于活动状态            if ($(this).parents('.J_menuTab').prev('.J_menuTab').size()) {                var activeId = $(this).parents('.J_menuTab').prev('.J_menuTab:last').data('id');                $(this).parents('.J_menuTab').prev('.J_menuTab:last').addClass('active');                $('.J_mainContent .J_iframe').each(function () {                    if ($(this).data('id') == activeId) {                        $(this).show().siblings('.J_iframe').hide();                        return false;                    }                });                //  移除当前选项卡                $(this).parents('.J_menuTab').remove();                // 移除tab对应的内容区                $('.J_mainContent .J_iframe').each(function () {                    if ($(this).data('id') == closeTabId) {                        $(this).remove();                        return false;                    }                });            }        }        // 当前元素不处于活动状态        else {            //  移除当前选项卡            $(this).parents('.J_menuTab').remove();            // 移除相应tab对应的内容区            $('.J_mainContent .J_iframe').each(function () {                if ($(this).data('id') == closeTabId) {                    $(this).remove();                    return false;                }            });            scrollToTab($('.J_menuTab.active'));        }        return false;    }    $('.J_menuTabs').on('click', '.J_menuTab i', closeTab);		// 关闭当前选项卡    function tabCloseCurrent() {    	$('.page-tabs-content').find('.active i').trigger("click");    }    //关闭其他选项卡    function closeOtherTabs(){        $('.page-tabs-content').children("[data-id]").not(":first").not(".active").each(function () {            $('.J_iframe[data-id="' + $(this).data('id') + '"]').remove();            $(this).remove();        });        $('.page-tabs-content').css("margin-left", "0");    }    $('.J_tabCloseOther').on('click', closeOtherTabs);    //滚动到已激活的选项卡    function showActiveTab(){        scrollToTab($('.J_menuTab.active'));    }    $('.J_tabShowActive').on('click', showActiveTab);    // 点击选项卡菜单    function activeTab() {        if (!$(this).hasClass('active')) {            var currentId = $(this).data('id');            // 显示tab对应的内容区            $('.J_mainContent .J_iframe').each(function () {                if ($(this).data('id') == currentId) {                    $(this).show().siblings('.J_iframe').hide();                    return false;                }            });            $(this).addClass('active').siblings('.J_menuTab').removeClass('active');            scrollToTab(this);        }    }    $('.J_menuTabs').on('click', '.J_menuTab', activeTab);    //刷新iframe    function refreshTab() {        var currentId = $('.page-tabs-content').find('.active').attr('data-id');    	var target = $('.J_iframe[data-id="' + currentId + '"]');        var url = target.attr('src');        target.attr('src', url).ready();    }    $('.J_menuTabs').on('dblclick', '.J_menuTab', refreshTab);		// 页签刷新按钮    $('.tabReload').on('click', refreshTab);    // 左移按扭    $('.J_tabLeft').on('click', scrollTabLeft);    // 右移按扭    $('.J_tabRight').on('click', scrollTabRight);		// 关闭当前	$('.tabCloseCurrent').on('click', tabCloseCurrent);    // 关闭全部    $('.J_tabCloseAll').on('click', function () {        $('.page-tabs-content').children("[data-id]").not(":first").each(function () {            $('.J_iframe[data-id="' + $(this).data('id') + '"]').remove();            $(this).remove();        });        $('.page-tabs-content').children("[data-id]:first").each(function () {            $('.J_iframe[data-id="' + $(this).data('id') + '"]').show();            $(this).addClass("active");        });        $('.page-tabs-content').css("margin-left", "0");    });        // 右键菜单实现    $.contextMenu({        selector: ".J_menuTab",        trigger: 'right',        autoHide: true,        items: {            "close_current": {                name: "关闭当前",                callback: function(key, opt) {                	opt.$trigger.find('i').trigger("click");                }            },            "close_other": {                name: "关闭其他",                callback: function(key, opt) {                	$(".J_tabCloseOther").trigger("click");                }            },            "close_all": {                name: "全部关闭",                callback: function(key, opt) {					$('.J_tabCloseAll').trigger("click");                }            },        }    })});
 |