;(function($){ var PLUGIN_NAME = "sliderManager"; var ImplementationClass = function(target, config) { var settings = $.extend({}, $[PLUGIN_NAME].defaults, config); var myself = this, slider = null, timeoutID = null; $(target).data(PLUGIN_NAME, myself); /** constructor */ function _constructor_() { $(target).on('createChildren', initSlider); $(target).on('destroyChildren', destroy); } $.extend( myself, { moveSlide : function(f, index) { slider.stopAuto(false); slider[f](index); if(timeoutID) { clearTimeout(timeoutID); } if(settings.auto) { timeoutID = setTimeout(function(){ slider.startAuto(false); timeoutID = null; }, settings.pause); } }, havingnopoint : "" }); _constructor_(); function initSlider(event){ var bxSliderOptions = { auto: settings.auto, speed: settings.speed, pause: settings.pause, minSlides: settings.minSlides, maxSlides: settings.maxSlides, slideWidth: settings.slideWidth, slideMargin: settings.slideMargin, areaMargin: settings.areaMargin, moveSlides: 1, pager: false, controls: false }; var agent = navigator.userAgent; if(agent.search(/iPhone/) != -1 || agent.search(/iPad/) != -1 || agent.search(/iPod/) != -1) { bxSliderOptions.useCSS = false; } if(settings.onSlideAfter) { bxSliderOptions.onSlideAfter = settings.onSlideAfter; } slider = $('.bxslider', $(target)).bxSlider(bxSliderOptions); timeoutID = null; $(".next", $(target)).on('click', function(event){ myself.moveSlide('goToNextSlide', -1); event.preventDefault(); }); $(".pre", $(target)).on('click', function(event){ myself.moveSlide('goToPrevSlide', -1); event.preventDefault(); }); if(settings.auto) { $('.bxslider a', $(target)).hover(function(event){ if(timeoutID) { clearTimeout(timeoutID); } slider.stopAuto(false); }, function(event){ slider.startAuto(false); }); } if(settings.onInitSlide) { settings.onInitSlide(); } } //function destroy(event){ if (slider) { $(".next", $(target)).off(); $(".pre", $(target)).off(); $('.bxslider', $(target)).off(); if (settings.onDestroy) { settings.onDestroy(); } slider.destroySlider(); slider = null; } } function destroy(event){ if (slider) { $(".next", $(target)).off(); $(".pre", $(target)).off(); $('.bxslider', $(target)).off(); if (settings.onDestroy) { settings.onDestroy(); } } } }; $[PLUGIN_NAME] = { defaults : {auto: true, speed: 500, pause: 8000, minSlides: 1, maxSlides: 1, slideWidth: 0, slideMargin: 0, areaMargin: 0, onInitSlide: null, onSlideAfter: null, onDestroy: null } }; $.fn[PLUGIN_NAME] = function(config){ return this.each(function(i){ new ImplementationClass(this, config); }); }; })(jQuery);