/** * @name: yyslider * @overview: 左右滚动组件 * @require: jquery.js * @author: yang(ws2042@163.com) */ (function($){ $.fn.yyslider = function( option ){ // 参数对象 option = $.extend( {}, $.fn.yyslider.option, option ); $.fn.yyslider.option = { a_sliderbox : undefined, // a_sliderlist : undefined, // a_slideritem : undefined, // a_slider_prev : undefined, // a_slider_next : undefined, // a_show_num : 1, // a_show_type : "default", // a_show_dir : "left", // 滚动方向 a_steptime : 500, // 滚动单步长动画时间 a_margin : 0, // margin a_scroll_num : 1, // 滚动数量 a_funct : undefined, // a_classon : "on", a_statuscheck : function(){} // 回调函数用于判断当前按钮状态 }; // 返回实例 return this.each(function(){ // 定义参数 var slider = $(this), sliderbox = slider.find(option.a_sliderbox), sliderlist = slider.find(option.a_sliderlist), slideritem = slider.find(option.a_slideritem), slider_prev = slider.find(option.a_slider_prev), slider_next = slider.find(option.a_slider_next), show_type = option.a_show_type, funct = option.a_funct || function(){}, imargin = option.a_margin, show_num = option.a_show_num, num = slideritem.length, snum = option.a_scroll_num, n = 0, sdir = option.a_show_dir, // steptime = option.a_steptime, // stepwh = 0, // 滚动单步长 classon = option.a_classon || "on", statuscheck = option.a_statuscheck ; // x if(sdir=="left"){ // init stepwh = slideritem.width()+imargin; sliderlist.width( (slideritem.width()+imargin)*num ); // event slider_prev.unbind().bind("click",function(){ if(n<=0 && !sliderlist.hasclass("running")){ n=n+snum; if(n>=0){ n=0; statuscheck("first"); }else{ statuscheck("running"); }; sliderlist.addclass("running").animate({"left":n*(slideritem.width()+imargin)+"px"},steptime,function(){ sliderlist.removeclass("running"); }); } }); slider_next.unbind().bind("click",function(){ if(n > -(num-show_num) && !sliderlist.hasclass("running")){ n=n-snum; if(n<=-(num-show_num)){ n=-(num-show_num) statuscheck("last"); }else{ statuscheck("running"); }; sliderlist.addclass("running").animate({"left":n*(slideritem.width()+imargin)+"px"},steptime,function(){ sliderlist.removeclass("running"); }); } }); slideritem.each(function(i){ $(this).unbind().bind("click",function(){ slideritem.removeclass(classon); $(this).addclass(classon); funct(i); }) }); $(window).resize(function(){ sliderlist.css({"left":n*(slideritem.width()+imargin)+"px"}) }) }; // y if(sdir=="top"){ // init stepwh = slideritem.height()+imargin; sliderlist.height( (slideritem.height()+imargin)*num ); // event slider_prev.unbind().bind("click",function(){ if(n<=0 && !sliderlist.hasclass("running")){ n=n+snum; if(n>=0){ n=0; statuscheck("first"); }else{ statuscheck("running"); }; sliderlist.addclass("running").animate({"top":n*(slideritem.height()+imargin)+"px"},steptime,function(){ sliderlist.removeclass("running"); }); } }); slider_next.unbind().bind("click",function(){ if(n > -(num-show_num) && !sliderlist.hasclass("running")){ n=n-snum; if(n<=-(num-show_num)){ n=-(num-show_num) statuscheck("last"); }else{ statuscheck("running"); }; sliderlist.addclass("running").animate({"top":n*(slideritem.height()+imargin)+"px"},steptime,function(){ sliderlist.removeclass("running"); }); } }); slideritem.each(function(i){ $(this).unbind().bind("click",function(){ slideritem.removeclass(classon); $(this).addclass(classon); funct(i); }) }); $(window).resize(function(){ sliderlist.css({"top":n*(slideritem.height()+imargin)+"px"}) }) } }); } })(jquery);