$.fn.thbanner = function (arg) { var itemlen = $(this).find(".banner-item").length;//banner������ var opt = {} opt.timer = 8000; opt.index = 0;//��ǰ��ʾ���� opt = $.extend(opt, arg);//�ϲ������ȡ���� var firstmark = true; var timeout = null; //flag = true��ʧ flag = false��ʾ function addshowclass(flag) { if (flag) { var oldbanner = $(".banner-item[data-role='out']"); if (oldbanner) { oldbanner.addclass("banner-item-remove " + oldbanner.attr("data-classout")); var textlist = oldbanner.find(".banner-text > div > div"); textlist && textlist.toarray().foreach(function (obj) { $(obj).attr("class", "animated").addclass($(obj).attr("data-classout")); }); } } else { var newbanner = $(".banner-item[data-role='in']"); if (newbanner) { newbanner.addclass("banner-item-cur "+newbanner.attr("data-classin")); var textlist = newbanner.find(".banner-text > div > div"); textlist && textlist.toarray().foreach(function (obj) { $(obj).attr("class", "animated").addclass($(obj).attr("data-classin")); }); } } } function change() {//�л��¼� $(".banner .banner-tool .tool-item").removeclass("tool-item-cur"); $(".banner .banner-tool .tool-item").eq(opt.index).addclass("tool-item-cur"); $(".banner .banner-item").removeclass("banner-item-remove");//�ƴ�ч������ $(".banner-item[data-role='out']").removeattr("data-role"); $(".banner-item[data-role='in']").removeattr("data-in"); var oldbanner = $(".banner .banner-item-cur");//��ʧ��bannerч������ if (oldbanner.length) { oldbanner.attr("class", "banner-item animated").attr("data-role","out"); addshowclass(true); } var newbanner = $(".banner .banner-item").eq(opt.index);//��ʾ��bannerч����ʾ if (newbanner.length) { if (firstmark) { firstmark = false; newbanner.attr("class", "banner-item animated").attr("data-role", "in");; addshowclass(); } else { cleartimeout(timeout); newbanner.attr("class", "banner-item animated").attr("data-role", "in");; timeout = settimeout(addshowclass, oldbanner.attr("data-time")); } } var previndex = opt.index - 1, nextindex = opt.index + 1; if (previndex < 0) { previndex = itemlen - 1; } if (nextindex >= itemlen) { nextindex = 0; } var previtem = $(".banner .banner-item").eq(previndex); var nextitem = $(".banner .banner-item").eq(nextindex); $(".banner .banner-prev").css({ "background-image": "url(" + previtem.attr("data-thumb") + ")" }); $(".banner .banner-next").css({ "background-image": "url(" + nextitem.attr("data-thumb") + ")" }); }//��ʾ�¼� function intervalfun() { opt.index++; if (opt.index >= itemlen) { opt.index = 0; } change(); } if (itemlen > 1) { var bannertool = $(this).find(".banner-tool");//���õײ��ײ�сͼ����¼� for (var i = 0; i < itemlen; i++) { bannertool.append($("
")); } $(this).find(".banner-tool .tool-item").click(function () { if (opt.index != $(this).attr("data-num")) { opt.index = $(this).attr("data-num"); change(); } }); var bannerinterval = setinterval(intervalfun, opt.timer); $(this).hover(function () { clearinterval(bannerinterval); }, function () { bannerinterval = setinterval(intervalfun, opt.timer); }); //touch�¼� var beginx, endx; $(this).on("touchstart", function (e) { clearinterval(bannerinterval); var touch = e.originalevent.touches[0]; beginx = touch.clientx; }); $(this).on("touchmove", function (e) { var touch = e.originalevent.touches[0]; endx = touch.clientx; }); $(this).on("touchend", function (e) { if ((beginx - endx) < 0) { opt.index--; if (opt.index < 0) { opt.index = itemlen - 1; } change(); } else if ((beginx - endx) > 0) { opt.index++; if (opt.index >= itemlen) { opt.index = 0; } change(); } bannerinterval = setinterval(intervalfun, opt.timer); }); } change(); $(this).find(".banner-prev").click(function () { opt.index--; if (opt.index < 0) { opt.index = itemlen - 1; } change(); }); $(this).find(".banner-next").click(function () { opt.index++; if (opt.index >= itemlen) { opt.index = 0; } change(); }); }