// 匿名函數自執行 (function() { function Carsouel(json) { // 外層的盒子 this.$dom = $("#"+json.id); // ul this.$ul = null; // ul下面全部的li this.$ullis = null; // 左側按鈕 this.$left = null; // 右側按鈕 this.$right = null; this.$ol = null; this.$ollis = null; // 添加一個控制變量 this.idx = 0; // 動畫時間 this.animateTime = json.animateTime; // 盒子寬高 this.width = json.width; this.height = json.height; // 圖片數組屬性 this.imgArr = json.images; // 圖片數組長度 this.imgArrLength = json.images.length; // 初始化 this.init(); // 事件監聽 this.bindEvent(); } Carsouel.prototype.init = function() { this.$ul = $("<ul></ul>"); for(var i=0; i<this.imgArr.length; i++) { this.$ul.append($("<li><img src='"+this.imgArr[i]+"'></li>")); } this.$dom.append(this.$ul); // 拿到ul下的全部li this.$ullis = this.$ul.find("li"); // 最外層盒子的css this.$dom.css({ "position":"relative", "width": this.width, "height": this.height, "margin": "0 auto", "border": "1px solid gray", "overflow": "hidden" }); // ul的css var _this = this; this.$ul.css({ "position":"absolute", "width": _this.width, "height": _this.height }); // ul的li的css this.$ullis.css({ "position":"absolute", "left":_this.width }); // 單獨設置默認第一張圖片 this.$ullis.eq(0).css({ "left": 0 }); // 初始化左右按鈕 this.$left = $("<a class='left'><</a>"); this.$right = $("<a class='right'>></a>"); this.$dom.append(this.$left); this.$dom.append(this.$right); // 初始化下面ol this.$ol = $("<ol class='circle'></ol>"); for(var i=0; i<this.imgArr.length; i++) { this.$ol.append($("<li></li>")); } this.$dom.append(this.$ol); // 拿到ol下的全部li this.$ollis = this.$ol.find("li"); this.$ol.css({ "position":"absolute", "bottom": 10, "left": 400, "list-style":"none" }); // ol的li的css this.$ollis.css({ "float": "left", "width": 50, "height": 50, "margin-left":10 }); this.$ollis.eq(0).addClass("active"); } Carsouel.prototype.bindEvent = function() { var _this = this; // 左側按鈕 this.$left.click(function() { _this.$ullis.eq(_this.idx).animate({"left":_this.width},_this.animateTime); _this.idx++; if (_this.idx > _this.imgArrLength-1) { _this.idx = 0; } _this.$ullis.eq(_this.idx).css({ "left":-_this.width }).animate({"left":0},_this.animateTime); }); // 右側按鈕 本身完成 // 下面的ol的li事件綁定 this.$ollis.click(function() { // 點擊哪一個 顯示哪張圖片 var old = _this.idx; var num = $(this).index(); _this.idx = num; if (num==old) { return; } console.log(num,old); _this.$ullis.eq(old).css({ "left": 0 }).animate({"left":-_this.width},_this.animateTime); _this.$ullis.eq(num).css({ "left": _this.width }).animate({"left":0},_this.animateTime); // 對應樣式 _this.$ollis.eq(num).addClass("active").siblings().removeClass("active"); }) } window.Carsouel = Carsouel; })();