网站首页 > 技术文章 正文
jQuery封装构造函数版轮播图
function Tab(){
this.$box=$('#box');
this.$innerBox=this.$box.find('.boxInner');
this.$aDiv=null;//jQuery中没有DOM映射
this.$aImg=null;
this.$ul=this.$box.find('ul');
this.$aLi=null;
this.$left=this.$box.find('.left');
this.$right=this.$box.find('.right');
this.data=null;
this.timer=null;
this.n=0;
this.init();}
Tab.prototype={
constructor:Tab,
init:function(){
var _this=this;
//1.获取数据
this.getData();
//2.绑定数据
this.bind();
//3.延迟加载
this.lazyImg();
//4.图片渐隐渐现
clearInterval(this.timer);
this.timer=setInterval(function(){
_this.autoMove();
},2000)
//5.焦点自动轮播
//6.移入停止,移出继续
this.overout();
//7.点击焦点手动切换
this.handleChange();
//8.点击左右按钮进行切换
this.leftRight();
},
getData:function(){
var _this=this;
$.ajax({
type:'get',
url:'json/data.txt',
async:false,
dataType:'json',
success:function(val){
_this.data=val;
}
})
},
bind:function(){
var strDiv='';
var strLi='';
$.each(this.data,function(index,item){
strDiv+='<div><img src="" realImg="'+item.imgSrc+'" alt=""></div>';
strLi+=index==0?'<li class="on"></li>':'<li></li>';
})
this.$innerBox.html(strDiv);
this.$ul.html(strLi);
},
lazyImg:function(){
var _this=this;
this.$aDiv=this.$innerBox.children('div');
this.$aImg=this.$innerBox.find('img');
this.$aLi=this.$ul.find('li');
$.each(this.$aImg,function(index,item){
var tmpImg=new Image;
tmpImg.src=item.getAttribute('realImg');
tmpImg.onload=function(){
item.src=this.src;
tmpImg=null;
var $div1=_this.$aDiv.eq(0);
$div1.css('zIndex',1).fadeIn();
}})},
autoMove:function(){
if(this.n>=this.$aDiv.length-1){
this.n=-1;}
this.n++;
this.setBanner();},
setBanner:function(){
var _this=this;
$.each(this.$aDiv,function(index,item){
if(index==_this.n){
// $(item).css('zIndex',1).fadeIn().siblings().fadeOut(300);
$(item).css('zIndex',1).siblings().css('zIndex',0);
$(item).fadeIn(500,function(){
$(this).siblings().fadeOut()});}});
this.bannerTip();},
bannerTip:function(){
var _this=this;
$.each(this.$aLi,function(index,item){
item.className=index==_this.n?'on':null;})},
overout:function(){
var _this=this;
this.$box.mouseover(function(){
clearInterval(_this.timer);
_this.$left.show();
_this.$right.show();})
this.$box.mouseout(function(){
_this.timer=setInterval(function(){
_this.autoMove();
},2000)
_this.$left.hide();
_this.$right.hide();
})},
handleChange:function(){
var _this=this;
this.$aLi.click(function(){
_this.n=$(this).index();
_this.setBanner();
}) },
leftRight:function(){
var _this=this;
this.$right.click(function(){
_this.autoMove();
});
this.$left.click(function(){
if(_this.n<=0){
_this.n=_this.$aLi.length;}
_this.n--;
_this.setBanner();
})}}
猜你喜欢
- 2024-09-11 浅析MySQL Join Reorder算法(mysqlinner join)
- 2024-09-11 js 小函数(js函数总结)
- 2024-09-11 Kubernetes 高性能网络组件 Calico 入门教程
- 2024-09-11 jQuery中的clone妙用(jquery.on)
- 2024-09-11 自定义一个"骚气"的jQuery
- 2024-09-11 前端单元测试以及自动化构建入门(前端单元测试是什么)
- 2024-09-11 Python全栈 Web(jQuery 一条龙服务)
- 2024-09-11 jQuery遍历说、详解与示例的结合,轻松搞定这个遍历!
- 2024-09-11 「clickhouse专栏」对标mongodb存储类JSON数据文档统计分析
- 2024-09-11 jQuery实现简易购物车功能(jquery购物车结算页面)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)