hlw-cqass-web/static/resources/common/common.js

1387 lines
41 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 18.1.3版本更新
//头条+banner轮播+专题自动播放
/*
* 所有拓展组件在同个页面引用时其按钮等等选择器class 不能相同,否则将会冲突
*
* */
(function($) {
//所有 class均为jquery选择器
//切换
/*
* option参数说明没有特殊说明类型则为string
* text:切换文本的class如果没有则不填写
* prev 切换btn class如果没有则不填写
* next 切换btn class ,如果没有则不填写
* num 通过num切换如果没有则不填写num的length必须与切换对象length相同
* className 当前选中num的className(不是选择器),默认:cur
* callback 类型function 每次切换完成调用,如果没有则不填写
* index 类型number 切换开始位置
* time 类型 number 切换过渡时间默认300;
* autoPlay 类型 boolean 是否轮播,默认:true
* playTime 类型 number 自动播放时间,默认:4000,
* direction 自动播放的顺序 默认next
* type 切换方向top或left,默认left
* space 类型number 切换item中的间距 默认0
* indy动态数字变化
* lendy 总长度
* */
function simpleSwitch(option) {
var $banner = option._this,
$text = option.text ? $(option.text) : null,
$prev = option.prev ? $(option.prev) : null,
$next = option.next ? $(option.next) : null,
$num = option.num ? $(option.num) : null,
$indy = option.indy ? $(option.indy) : null,
$lendy = option.lendy ? $(option.lendy) : null,
event = option.event || 'mouseover',
callBack = option.callback;
var len = $banner.length,
index = option.index || 0,
time = option.time || 300,
playTime = option.playTime || 4000,
type = option.type || 'left',
direction = option.direction || 'next',
autoPlay =
option.autoPlay === undefined || option.autoPlay === true
? true
: false,
className = option.className || 'cur';
type = type === 'top' ? 'top' : 'left';
var pw =
type === 'top' ? $banner.parent().height() : $banner.parent().width(),
cw = type === 'top' ? $banner.height() : $banner.width();
option.space = option.space || 0;
cw += option.space;
var css = {};
if (cw * len <= pw) return;
init();
function init() {
if ($lendy) {
$lendy.text(len);
}
$banner.each(function() {
var _i = $(this).index();
$(this).show();
css[type] = (_i - index) * cw;
$(this).css(css);
});
if ($num) {
$num
.eq(index)
.addClass(className)
.siblings()
.removeClass(className);
}
if ($indy) {
$indy.text(index + 1);
}
if ($text) {
$text
.eq(index)
.show(0)
.siblings()
.hide();
}
}
function nextMove() {
if (!$banner.is(':visible')) return;
for (var i = 0; i < len; i++) {
var $item = $banner.eq(i);
var pos = Math.round($item.position()[type]);
if (pos <= -cw) {
var perLeft = 0;
if (i === 0) {
perLeft = $banner.eq(len - 1).position()[type];
} else {
perLeft = $banner.eq(i - 1).position()[type];
}
css[type] = perLeft + cw;
$item.css(css);
}
var nowLeft = Math.round($item.position()[type]);
css[type] = nowLeft - cw;
$item.animate(css, time);
}
}
function prevMove() {
if (!$banner.is(':visible')) return;
for (var i = 0; i < len; i++) {
var $item = $banner.eq(i);
var pos = Math.round($item.position()[type]);
if (pos >= pw) {
var perLeft = 0;
if (i === len - 1) {
perLeft = $banner.eq(0).position()[type];
} else {
perLeft = $banner.eq(i + 1).position()[type];
}
css[type] = perLeft - cw;
$item.css(css);
}
var nowLeft = Math.round($item.position()[type]);
css[type] = nowLeft + cw;
$item.animate(css, time);
}
}
function bannerPlay() {
if ($banner.is(':animated')) return;
index++;
index = index >= len ? 0 : index;
if (direction === 'next') {
nextMove();
} else {
prevMove();
}
toNextShow();
}
if (autoPlay) {
var play = setInterval(bannerPlay, playTime);
}
$banner.hover(
function () {
clearInterval(play);
play = null;
},
function () {
if (autoPlay) {
play = setInterval(bannerPlay, playTime);
}
}
);
function toNextShow() {
if ($num) {
if (direction === 'next') {
$num
.eq(index)
.addClass(className)
.siblings()
.removeClass(className);
} else {
$num
.eq(len - index)
.addClass(className)
.siblings()
.removeClass(className);
}
}
if ($text) {
if (direction === 'next') {
$text
.eq(index)
.show(0)
.siblings()
.hide();
} else {
$text
.eq(len - index)
.show(0)
.siblings()
.hide();
}
}
if ($indy) {
if (direction === 'next') {
$indy.text(index + 1);
} else {
$indy.text(len - index + 1);
}
}
if (!autoPlay) return;
clearInterval(play);
play = null;
play = setInterval(bannerPlay, playTime);
if (callBack) callBack();
}
if ($next) {
$next.click(function() {
if ($banner.is(':animated')) return;
index--;
index = index < 0 ? len - 1 : index;
// 12.10淇敼
prevMove();
toNextShow();
});
}
if ($prev) {
$prev.click(function() {
if ($banner.is(':animated')) return;
index++;
index = index >= len ? 0 : index;
// 12.10淇敼
nextMove();
toNextShow();
});
}
if ($num) {
$num.on(event, function() {
if ($banner.is(':animated')) return;
var nextIndex = $num.index($(this));
$banner.each(function() {
var _i = $(this).index();
$(this).show();
css[type] = (_i - index) * cw;
$(this).css(css);
});
for (var i = 0; i < len; i++) {
var $item = $banner.eq(i);
var nowLeft = Math.round($item.position()[type]);
css[type] = nowLeft + -cw * (nextIndex - index);
$item.animate(css, time);
}
index = nextIndex;
toNextShow();
});
}
}
// 淡入淡出切换
/*
* 参数配置如上
* */
function SwitchFade(option) {
var $banner = option._this,
$text = option.text ? $(option.text) : null,
$num = option.num ? $(option.num) : null,
$indy = option.indy ? $(option.indy) : null,
$lendy = option.lendy ? $(option.lendy) : null,
index = option.index || 0,
len = $banner.length,
time = option.time || 300,
autoPlay =
option.autoPlay === undefined || option.autoPlay === true
? true
: false,
playTime = option.playTime || 4000,
className = option.className || 'cur';
$banner.hide();
$banner.eq(index).show();
SwitchTransform();
function SwitchTransform() {
$banner
.stop()
.eq(index)
.fadeIn(time)
.siblings()
.fadeOut(time);
$num
.eq(index)
.addClass(className)
.siblings()
.removeClass(className);
$text
.eq(index)
.show()
.siblings()
.hide();
if ($indy) {
$lendy.text(len);
$indy.text(index + 1);
}
}
function SwitchPlay() {
if ($banner.is(':animated')) return;
index++;
index = index >= len ? 0 : index;
SwitchTransform();
}
if (autoPlay) {
var play = setInterval(SwitchPlay, playTime);
}
$banner.hover(
function() {
clearInterval(play);
play = null;
},
function() {
if (autoPlay) {
play = setInterval(SwitchPlay, playTime);
}
}
);
$num.hover(
function() {
clearInterval(play);
play = null;
index = $num.index($(this));
SwitchTransform();
},
function() {
if (autoPlay) {
play = setInterval(SwitchPlay, playTime);
}
}
);
if (option.prev) {
var $left = $(option.prev);
$left.click(function() {
index--;
index = index < 0 ? len - 1 : index;
SwitchTransform();
if (!autoPlay) return;
clearInterval(play);
play = null;
play = setInterval(SwitchPlay, playTime);
});
}
if (option.next) {
var $next = $(option.next);
$next.click(function() {
index++;
index = index >= len ? 0 : index;
SwitchTransform();
if (!autoPlay) return;
clearInterval(play);
play = null;
play = setInterval(SwitchPlay, playTime);
});
}
}
//滚动
/*
* option={
* type: 方向 top或 left 默认 left
* space间距 默认 15可以是负数最好设置一下
* next、prev左右切换按钮
* direction prev或者next 默认 next就是设置开始的时候是向左或者向右
* time 滚动时间 默认25,时间越大滚动越慢
*
* }
* */
function simpleRoll(option) {
function RollNext() {
// console.log(Width)
for (var i = 0; i < len; i++) {
var $item = $photo.eq(i);
if ($item.position()[type] <= -photoWidth) {
var perLeft = 0;
if (i === 0) {
perLeft = $photo.eq(len - 1).position()[type];
} else {
perLeft = $photo.eq(i - 1).position()[type];
}
var _css = {};
if (type === 'left') {
_css[type] = perLeft + cw;
} else {
_css[type] = perLeft + photoWidth;
}
$item.css(_css);
}
var nowLeft = $item.position()[type];
(function($item, nowLeft) {
setTimeout(function() {
var _css = {};
_css[type] = nowLeft - 1;
$item.css(_css);
}, 5);
})($item, nowLeft);
}
}
function RollPrev() {
for (var i = 0; i < len; i++) {
var $item = $photo.eq(i);
// console.log(Width)
if ($item.position()[type] >= photoWidth) {
var perLeft = 0;
if (i === len - 1) {
perLeft = $photo.eq(0).position()[type];
} else {
perLeft = $photo.eq(i + 1).position()[type];
}
var _css = {};
if (type === 'left') {
_css[type] = perLeft - cw;
} else {
_css[type] = perLeft - photoWidth;
}
$item.css(_css);
}
// 12.13修改
var nowLeft = $item.position()[type]
;(function($item, nowLeft) {
setTimeout(function() {
var _css = {};
_css[type] = nowLeft + 1;
$item.css(_css);
}, 5);
})($item, nowLeft);
}
}
function playtmFun() {
play = setInterval(playFun, time);
}
var $photo = option._this,
$parent = $photo.parent(),
type = option.type === 'top' ? 'top' : 'left';
var Width = type === 'top' ? $parent.height() : $parent.width();
var photoWidth = type === 'top' ? $photo.height() : $photo.width();
if ( $photo.width() <= Width) return $photo;
$photo.clone().appendTo($parent);
var $photo = $parent.children(),
direction = option.direction || 'next',
$next = option.next ? $(option.next) : null,
$prev = option.prev ? $(option.prev) : null,
len = $photo.length,
space = option.space || 15,
cw = $photo.width() + space,
play = null,
playFun = null,
time = option.time || 25;
$photo.each(function() {
var index = $(this).index();
var _css = {};
if (type === 'left') {
_css[type] = index * cw;
} else {
_css[type] = index * Width;
}
$(this).css(_css);
});
if (direction === 'next') {
playFun = RollNext;
} else {
playFun = RollPrev;
}
// 12.13修改
playtmFun();
if ($prev) {
$prev.click(function() {
clearInterval(play);
playFun = RollNext;
playtmFun();
});
}
if ($next) {
$next.click(function() {
clearInterval(play);
playFun = RollPrev;
playtmFun();
});
}
$photo.hover(
function() {
clearInterval(play);
play = null;
},
function() {
play = setInterval(playFun, time);
}
);
}
//滚动2
/*
* option={
* type: 方向 top或 left 默认 left
* space间距 默认 15最好设置一下
* next、prev左右切换按钮
* direction prev或者next 默认 next就是设置开始的时候是向左或者向右
* time 滚动时间 默认25,时间越大滚动越慢
*
* }
* */
function rollImages(option) {
var $photo = option._this,
direction = option.direction || 'next',
$next = option.next ? $(option.next) : null,
$prev = option.prev ? $(option.prev) : null,
$parent = $photo.parent(),
len = $photo.children().length,
space = option.space || 15,
cw =
$photo
.children()
.eq(0)
.width() + space,
play = null,
playFun = null,
time = option.time || 25,
type = option.type === 'top' ? 'top' : 'left',
$child = $photo.children();
var Width = type === 'top' ? $child.height() : $photo.children().width();
$child.each(function() {
var index = $(this).index();
$photo
.css({
position: 'relative'
})
.children()
.css({
position: 'absolute'
});
var _css = {};
if (type === 'left') {
_css[type] = index * cw;
} else {
_css[type] = index * Width;
}
$(this).css(_css);
});
if ($prev) {
$prev.click(function() {
clearInterval(play);
playFun = prevRoll;
playtmFun();
});
}
if ($next) {
$next.click(function() {
clearInterval(play);
playFun = nextRoll;
playtmFun();
});
}
$child.hover(
function() {
clearInterval(play);
play = null;
},
function() {
play = setInterval(playFun, time);
}
);
function playtmFun() {
play = setInterval(playFun, time);
}
if (direction === 'next') {
playFun = prevRoll;
} else {
playFun = nextRoll;
}
playtmFun();
function prevRoll() {
for (var i = 0; i < len; i++) {
var $item = $child.eq(i);
if ($item.position()[type] <= -Width) {
var perLeft = 0;
if (i === 0) {
perLeft = $child.eq(len - 1).position()[type];
} else {
perLeft = $child.eq(i - 1).position()[type];
}
var _css = {};
if (type === 'left') {
_css[type] = perLeft + cw;
} else {
_css[type] = perLeft + Width;
}
$item.css(_css);
}
var nowLeft = $item.position()[type]
;(function($item, nowLeft) {
setTimeout(function() {
var _css = {};
_css[type] = nowLeft - 1;
$item.css(_css);
}, 5);
})($item, nowLeft);
}
}
function nextRoll() {
for (var i = 0; i < len; i++) {
var $item = $child.eq(i);
if ($item.position()[type] >= cw * (len - 1)) {
var perLeft = 0;
if (i === len - 1) {
perLeft = $child.eq(0).position()[type];
} else {
perLeft = $child.eq(i + 1).position()[type];
}
var _css = {};
if (type === 'left') {
_css[type] = perLeft - cw;
} else {
_css[type] = perLeft - Width;
}
$item.css(_css);
}
// 12.13修改
var nowLeft = $item.position()[type]
;(function($item, nowLeft) {
setTimeout(function() {
var _css = {};
_css[type] = nowLeft + 1;
$item.css(_css);
}, 5);
})($item, nowLeft);
}
}
}
//多张图片左右滚动(每次只滚动一张)
/*
* option={
* len 显示几个的数量
* type: 方向 right 或 left 默认 left
* space间距 默认 15
* prev next 左右按钮
*
*
aniTime:默认500,//过渡时间
moveTime:默认3000//间隔滑动时间
*
*
* }
* */
function bannerRollLR(option) {
var len = option.len || banBox.children().length, //显示几个的数量
aniTime = option.aniTime || 500, //过渡时间
moveTime = option.moveTime || 3000, //间隔滑动时间
banBox = option._this, //移动的容器
type = option.type || 'left',
banBtnL = option.prev ? $(option.prev) : null, //左按钮
banBtnR = option.next ? $(option.next) : null; //右按钮
// banBtnL.show();
// banBtnR.show();
var sizeChild = banBox.children().length;
var moveM = banBox.children().outerWidth(true); //获取内外边距
if (sizeChild <= len) {
banBox.css({ width: sizeChild * moveM * 1.2 });
return;
}
var i = 0,
cloneArr = [];
// moveM = (banBox.parent().width())/len;
banBox.each(function() {
for (var i = 0; i < len; i++) {
cloneArr.push(
banBox
.children()
.eq(i)
.clone()
);
}
});
for (var j = 0; j < cloneArr.length; j++) {
banBox.append(cloneArr[j]);
}
var sizeChildo = banBox.children().length;
banBox.css({ width: sizeChildo * moveM * 1.2 });
function movel() {
if (banBox.is(':animated')) return;
i++;
if (i === sizeChildo - (len - 1)) {
banBox.css({ left: 0 });
i = 1;
}
banBox.stop().animate({ left: -i * moveM }, aniTime);
}
function mover() {
if (banBox.is(':animated')) return;
i--;
if (i === -1) {
banBox.css({ left: -(sizeChildo - len) * moveM });
i = sizeChildo - (len + 1);
}
banBox.stop().animate({ left: -i * moveM }, aniTime);
}
// 左按钮
// 添加三个变量12.10
var tmr;
var tml;
var t;
var bj;
if (type === 'left') {
bj = false;
} else {
bj = true;
}
if (banBtnL) {
banBtnL.click(function() {
clearInterval(t);
clearInterval(tmr);
clearInterval(tml);
movel();
tml = setInterval(movel, moveTime);
bj = false;
});
}
// 右按钮
if (banBtnR) {
banBtnR.click(function() {
clearInterval(t);
clearInterval(tml);
clearInterval(tmr);
mover();
tmr = setInterval(mover, moveTime);
bj = true;
});
}
// 定时器
if (type === 'left') {
t = setInterval(movel, moveTime);
} else {
t = setInterval(mover, moveTime);
}
// 对banner定时器的操作
banBox.parent().hover(
function() {
clearInterval(t);
clearInterval(tml);
clearInterval(tmr);
},
function() {
if (bj === false) {
t = setInterval(movel, moveTime);
} else {
t = setInterval(mover, moveTime);
}
}
);
}
/*
* tab切换
*jQuery(".news-tab-header li").tabPanelFun({
cur:'cur', 鼠标经过选项添加的类
tabContent:'.news-tab-lists', tab切换内容的最外层容器是news-tab-header的兄弟元素
tabItem:'.news-tab-item' tab切换内容里的子元素即要切换内容
pra默认false如果tab的选项按钮是多层次的就选ture
pradom 深层次的最父级元素
evnets 点击事件或者其他事件evnets:'click'默认mouseenter
})
*
*
*/
function tabPanelFun(option) {
var $panel = option._this,
cur = option.cur ? option.cur : null,
pra = option.pra ? option.pra : false,
pradom = option.pradom ? option.pradom : null,
tabContent = option.tabContent ? option.tabContent : null,
tabItem = option.tabItem ? option.tabItem : null,
ev = option.evnets ? option.evnets : 'mouseenter';
var tabItemdu = $(tabContent).find(tabItem);
$panel.eq(0).addClass(cur);
$(tabItemdu).hide();
$(tabItemdu)
.eq(0)
.show();
$panel.on(ev, function() {
var index = $(this)
.parent()
.children($panel.selector)
.index(this);
if (pra === true) {
jQuery(this)
.parents(pradom)
.siblings(tabContent)
.children(tabItemdu)
.eq(index)
.show()
.siblings()
.hide();
} else {
jQuery(this)
.parent()
.siblings(tabContent)
.children(tabItemdu)
.eq(index)
.show()
.siblings()
.hide();
}
jQuery(this)
.addClass(cur)
.siblings($panel.selector)
.removeClass(cur);
});
}
/**
* [dropDownFun description]
* tagSiblings:.drop-down .tag的兄弟元素
* optionItem下拉子选项
* optionBool:是否是获取当前元素的值给.tag元素默认是fasle默认当前元素true是子元素
* cur:当前添加的样式,不传递默认为空
* @return {[type]} [description]
*/
function dropDownFun(option) {
var $label = option._this,
cur = option.cur ? option.cur : '',
$tagSiblings = option.tagSiblings,
$optionBool = option.optionBool ? option.optionBool : false,
$optionItem = option.optionItem;
$label.each(function() {
$(this).on('click', function(e) {
var ev = e || window.event;
if (ev.stopPropagation) {
ev.stopPropagation();
} else {
ev.cancelBubble = true;
}
var index = $label.index($(this));
$(this)
.stop()
.toggleClass(cur)
.siblings($tagSiblings)
.slideToggle();
for (var i = 0, max = $label.length; i < max; i++) {
if (index !== i)
$label
.eq(i)
.stop()
.removeClass(cur)
.siblings($tagSiblings)
.slideUp();
}
});
});
$(document).on('click', $optionItem, function() {
// 注意是获取当前元素还是子元素
var text =
$optionBool === false
? $(this)
.children()
.text()
: $(this).text();
$(this)
.parents($tagSiblings)
.siblings($label)
.text(text);
});
$(document).on('click', function() {
$label
.stop()
.removeClass(cur)
.siblings($tagSiblings)
.slideUp();
});
}
// 多行文字超出用省略号显示
function overEllipsis(option) {
var $list = option._this,
maxCount = option.maxCount;
$list.each(function(index, item) {
var itemString = $(item).text();
if (itemString.length > maxCount) {
$(item).html(itemString.substring(0, maxCount) + '...');
}
});
}
//echart初始化
function initEchart(option) {
var $id = option._this,
toption = option.echartoption;
var myChart = echarts.init($id[0]);
myChart.setOption(toption);
}
//尾部下拉
function dropDownImgText(option) {
var tag = option.tag,
cont = option._this,
text = option.text,
arrow = option.arrow,
drop = option.drop,
label = option.label,
event = option.event || 'click',
cur = option.cur || 'cur';
$(cont).each(function(index, item) {
$(item)
.children(tag)
.on(event, function(e) {
e = e || event;
e.stopPropagation();
var _thi = $(this);
$(this)
.parent()
.siblings(cont)
.children(drop)
.slideUp();
$(this)
.parent()
.siblings(cont)
.children(tag)
.children()
.children(arrow)
.removeClass(cur);
$(this)
.parent()
.removeClass(cur);
$(document).on(event, function() {
_thi.siblings().slideUp();
_thi
.children()
.children(arrow)
.removeClass(cur);
_thi.parent().removeClass(cur);
});
if (
$(this)
.siblings()
.css('display') === 'block'
) {
$(this)
.children()
.children(arrow)
.removeClass(cur);
$(this)
.parent()
.removeClass(cur);
$(this)
.siblings()
.slideUp();
return;
} else {
$(this)
.children()
.children(arrow)
.addClass(cur);
$(this)
.parent()
.addClass(cur);
$(this)
.siblings()
.slideDown();
$(this)
.siblings()
.find(label)
.on(event, function(e) {
e = e || event;
_thi
.children()
.children(arrow)
.removeClass(cur);
_thi.parent().removeClass(cur);
_thi.children(text).text($(this).text());
_thi.siblings().slideUp();
e.stopPropagation();
});
return;
}
});
});
}
//tab切换
function tabSwitch(option) {
var items = $(option._this),
event = option.event || 'mouseover',
cur = option.cur || 'cur',
$index = option.index || 0,
tabHead = option.tabHead,
tabCont = option.tabCont;
items.each(function (index, item) {
var btns = $(item).find(tabHead);
var cons = $(item).find(tabCont);
$(btns)
.eq($index)
.addClass(cur);
$(cons).hide();
$(cons)
.eq($index)
.show();
$(btns).on(event, function () {
$(this)
.addClass(cur)
.siblings()
.removeClass(cur);
$(cons)
.eq($(btns).index(this))
.show()
.siblings()
.hide();
});
});
}
/*
*联动图片播放
*大图图片数量和图片列表的图片数量要一致
*option参数说明没有特殊说明类型则为string
*prev: 大图的向前播放按钮,
*next: 大图的向后播放按钮,
*ptNext: 图片列表向后播放按钮,
*ptPrev: 图片列表向前播放按钮,
*banner: 大图播放项,
*text: 大图文字项,
*link: 小图列表项,
*len: 小图列表项个数,
*linkSpace: 类型 number 小图之间的间距, 默认0
*linkType: 小图移动的方向,默认: top
*type: 大图切换方向top或left,默认left
*autoPlay 类型 boolean 是否轮播,默认:true;
*playTime 类型 number 自动播放时间,默认:4000;
*direction 大图自动播放的顺序 默认next;
*time 类型 number 切换过渡时间默认300;
*cur 小图的效果类名, 默认: 'cur'
*/
function linkSwitch(option) {
var $banner = option._this ? $(option._this) : null,
$link = option.link ? $(option.link) : null,
$text = option.text ? $(option.text) : null,
$next = option.next ? $(option.next) : null,
$prev = option.prev ? $(option.prev) : null;
var playTime = option.playTime || 4000,
linkSpace = option.linkSpace || 0,
direction = option.direction || 'next',
linkType = option.linkType || 'top',
type = option.type ? option.type : 'left',
linkLen = option.len,
autoPlay =
option.autoPlay === undefined || option.autoPlay === true
? true
: false,
event = option.event ? option.event : 'mouseover',
time = option.time || 300,
cur = option.cur || 'cur';
var unit =
type === 'top' ? $banner.parent().height() : $banner.parent().width(),
match =
linkType === 'top'
? $link.height() + linkSpace
: $link.width() + linkSpace,
linkParent =
linkType === 'top'
? $link.parent().height()
: $link.parent().width(),
len = $banner ? $banner.length : 0,
index = 0,
css = {},
cssLink = {};
var linkAuto=false;
if ($link.length>linkLen) {
linkAuto = true;
}
init();
if (autoPlay) {
var play = setInterval(bannerPlay, playTime);
$banner.hover(
function() {
clearInterval(play);
play = null;
},
function() {
play = setInterval(bannerPlay, playTime);
}
);
}
if ($link) {
$link.on(event, function() {
if ($banner.is(':animated')) return;
if ($link.is(':animated')) return;
index = $(this).index();
configShow();
index = index < 0 ? len - 1 : index;
$(this)
.addClass(cur)
.siblings()
.removeClass(cur);
move();
});
}
function init() {
$banner
.eq(index)
.show()
.siblings()
.hide();
$link.each(function() {
var _i = $(this).index();
$(this).show();
cssLink[linkType] = (_i - index) * match;
$(this).css(cssLink);
});
configShow();
}
function bannerPlay() {
if ($banner.is(':animated')) return;
index++;
index = index >= len ? 0 : index;
move();
configShow();
if (linkAuto) {
linkPlay();
}
}
function bannerPlayPrev() {
if ($banner.is(':animated')) return;
index--;
index = index < 0 ? len-1 : index;
move();
configShow();
if (linkAuto) {
linkPlayPrev();
}
}
if ($next) {
$next.click(function() {
if ($banner.is(':animated')) return;
bannerPlay();
});
}
if ($prev) {
$prev.click(function() {
if ($banner.is(':animated')) return;
bannerPlayPrev();
});
}
function move() {
$banner.eq(index).fadeIn(time).siblings().fadeOut(time);
}
function linkPlay() {
for (var i = 0; i < len; i++) {
var $item = $link.eq(i);
var type = linkType;
if (Math.round($item.position()[type]) <= -match) {
var perLeft = 0;
if (i === 0) {
perLeft = Math.round($link.eq(len - 1).position()[type]);
} else {
perLeft = Math.round($link.eq(i - 1).position()[type]);
}
cssLink[type] = perLeft + match;
$item.css(cssLink);
}
var nowLeft = Math.round($item.position()[type]);
cssLink[type] = nowLeft - match;
$item.animate(cssLink, time);
}
}
function linkPlayPrev() {
for (var i = 0; i < len; i++) {
var $item = $link.eq(i);
var type = linkType;
if (Math.round($item.position()[type]) >= match*(len-1)) {
// var perLeft = 0;
// if (i === len) {
// perLeft = Math.round($link.eq(0).position()[type]);
// } else {
// perLeft = Math.round($link.eq(i).position()[type]);
// }
cssLink[type] = -match;
$item.css(cssLink);
}
var nowLeft = Math.round($item.position()[type]);
cssLink[type] = nowLeft + match;
$item.animate(cssLink, time);
}
}
function configShow() {
if ($text) {
$text
.eq(index)
.show()
.siblings()
.hide();
}
$link
.eq(index)
.addClass(cur)
.siblings()
.removeClass(cur);
}
}
/****
* 回到顶部
*/
function goBack(option) {
var $banner = option._this ? $(option._this) : null;
$banner.click(function() {
$('html,body').animate(
{
scrollTop: 0
},
500
);
});
$(window).scroll(function() {
var gun = $(document).scrollTop();
if (gun <= 400) {
if (option.isShow) {
$banner.hide();
}
} else {
$banner.show();
}
});
}
/****
* 左右浮动(广告弹窗)
* direction(left right)必填
*/
function floatLR(option) {
var $banner = option._this ? $(option._this) : null,
direction = option.direction;
var margin_dis =
(parseInt($(document.body).width()) - 1200) / 2 + 1200 + 30 + 'px';
$banner.css(direction, margin_dis);
$(window).resize(function() {
if (parseInt($(window).width()) < 1480) {
margin_dis = parseInt($(window).width()) - 100 + 'px';
} else {
margin_dis =
(parseInt($(document.body).width()) - 1200) / 2 + 1200 + 30 + 'px';
}
$banner.css(direction, margin_dis);
});
}
$.fn.extend({
SwitchFade: function(option) {
var opt = option || {};
opt._this = $(this);
SwitchFade(opt);
},
simpleSwitch: function(option) {
var opt = option || {};
opt._this = $(this);
simpleSwitch(opt);
},
simpleRoll: function(optioin) {
var option = optioin || {};
option._this = $(this);
simpleRoll(option);
},
rollImages: function(optioin) {
var option = optioin || {};
option._this = $(this);
rollImages(option);
},
bannerRollLR: function(optioin) {
var option = optioin || {};
option._this = $(this);
bannerRollLR(option);
},
tabPanelFun: function(optioin) {
var option = optioin || {};
option._this = $(this);
tabPanelFun(option);
},
dropDownFun: function(optioin) {
var option = optioin || {};
option._this = $(this);
dropDownFun(option);
},
overEllipsis: function(optioin) {
var option = optioin || {};
option._this = $(this);
overEllipsis(option);
},
initEchart: function(optioin) {
var option = optioin || {};
option._this = $(this);
initEchart(option);
},
dropDownImgText: function(optioin) {
var option = optioin || {};
option._this = $(this);
dropDownImgText(option);
},
tabSwitch: function(optioin) {
var option = optioin || {};
option._this = $(this);
tabSwitch(option);
},
linkSwitch: function(optioin) {
var option = optioin || {};
option._this = $(this);
linkSwitch(option);
},
goBack: function(optioin) {
var option = optioin || {};
option._this = $(this);
goBack(option);
},
floatLR: function(optioin) {
var option = optioin || {};
option._this = $(this);
floatLR(option);
}
});
// 独立的自动播放方法
// 独立的自动播放方法
$.fn.autoPlayTabs = function(options) {
const settings = $.extend({
tabHead: "", // 选项卡标题的选择器
tabCont: "", // 选项卡内容的选择器
cur: "cur", // 当前活动选项卡的类名
interval: 3000, // 自动播放间隔时间(单位:毫秒)
pauseOnHover: true, // 是否在鼠标悬停时暂停自动播放
autoPlay:true
}, options);
// 仅在当前元素内部查找 tabHead 和 tabCont
const $tabHead = this.find(settings.tabHead);
const $tabCont = this.find(settings.tabCont);
let currentIndex = 0;
let autoPlayInterval;
// 切换选项卡的函数
function switchTab(index) {
$tabHead.removeClass(settings.cur).eq(index).addClass(settings.cur);
$tabCont.hide().eq(index).show();
}
// 启动自动播放
function startAutoPlay() {
if(!settings.autoPlay)
autoPlayInterval = setInterval(() => {
currentIndex = (currentIndex + 1) % $tabHead.length; // 循环切换
switchTab(currentIndex);
}, settings.interval);
}
// 停止自动播放
function stopAutoPlay() {
if (autoPlayInterval) {
clearInterval(autoPlayInterval);
}
}
// 初始化自动播放
if (settings.autoPlay) {
startAutoPlay();
}
// 鼠标移动到 tabHead 时切换到对应内容
$tabHead.on("mouseenter", function() {
const index = $(this).index(); // 获取当前选项卡的索引
currentIndex = index; // 更新当前索引
switchTab(index); // 切换到对应内容
// 如果启用了悬停暂停,则停止自动播放
if (settings.pauseOnHover) {
stopAutoPlay();
}
});
// 鼠标移出 tabHead 时恢复自动播放
if (settings.pauseOnHover) {
$tabHead.on("mouseleave", function() {
startAutoPlay();
});
}
// 返回当前对象以支持链式调用
return this;
};
})(jQuery);
if (typeof exports === 'object') {
module.exports = jQuery;
}