1 line
2.5 KiB
JavaScript
1 line
2.5 KiB
JavaScript
!function(h){"use strict";var r=function(t,e){this.$element=h(t),this.options=e,this.options.slide&&this.slide(this.options.slide),"hover"==this.options.pause&&this.$element.on("mouseenter",h.proxy(this.pause,this)).on("mouseleave",h.proxy(this.cycle,this))};r.prototype={cycle:function(t){return t||(this.paused=!1),this.options.interval&&!this.paused&&(this.interval=setInterval(h.proxy(this.next,this),this.options.interval)),this},to:function(t){var e=this.$element.find(".item.active"),i=e.parent().children(),s=i.index(e),n=this;if(!(t>i.length-1||t<0))return this.sliding?this.$element.one("slid",function(){n.to(t)}):s==t?this.pause().cycle():this.slide(s<t?"next":"prev",h(i[t]))},pause:function(t){return t||(this.paused=!0),this.$element.find(".next, .prev").length&&h.support.transition.end&&(this.$element.trigger(h.support.transition.end),this.cycle()),clearInterval(this.interval),this.interval=null,this},next:function(){if(!this.sliding)return this.slide("next")},prev:function(){if(!this.sliding)return this.slide("prev")},slide:function(t,e){var i,s=this.$element.find(".item.active"),n=e||s[t](),r=this.interval,a="next"==t?"left":"right",l="next"==t?"first":"last",o=this;if(this.sliding=!0,r&&this.pause(),n=n.length?n:this.$element.find(".item")[l](),i=h.Event("slide",{relatedTarget:n[0]}),!n.hasClass("active")){if(h.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(i),i.isDefaultPrevented())return;n.addClass(t),n[0].offsetWidth,s.addClass(a),n.addClass(a),this.$element.one(h.support.transition.end,function(){n.removeClass([t,a].join(" ")).addClass("active"),s.removeClass(["active",a].join(" ")),o.sliding=!1,setTimeout(function(){o.$element.trigger("slid")},0)})}else{if(this.$element.trigger(i),i.isDefaultPrevented())return;s.removeClass("active"),n.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return r&&this.cycle(),this}}},h.fn.carousel=function(n){return this.each(function(){var t=h(this),e=t.data("carousel"),i=h.extend({},h.fn.carousel.defaults,"object"==typeof n&&n),s="string"==typeof n?n:i.slide;e||t.data("carousel",e=new r(this,i)),"number"==typeof n?e.to(n):s?e[s]():i.interval&&e.cycle()})},h.fn.carousel.defaults={interval:5e3,pause:"hover"},h.fn.carousel.Constructor=r,h(document).on("click.carousel.data-api","[data-slide]",function(t){var e,i=h(this),s=h(i.attr("data-target")||(e=i.attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")),n=h.extend({},s.data(),i.data());s.carousel(n),t.preventDefault()})}(window.jQuery); |