/* * jquery—shopping 0.1 **根据原来的js改用为自己的js v0.1 2014年10月27日 16:00:56 -- by yb **v0.2 2015年8月24日 17:45 -- by yb changelog v0.2 : 1、将cartnumber参数的默认值去掉了,如果不需要用js每加入一次就加一个购物车的数量则不需要该参数,购物车数量的变化应该由后台实现; 2、在飞入购物车的元素下沉到购物车后,改变购物车数量的事件加了一个判断(是否设置了cartnumber参数); 3、新增一个参数"numflyclass",将原js中弹出"+1"元素的固定类名改成参数形式; 4、将js中原来的终点x轴位置改成了js获取,y轴的位置有小的改动; 5、去掉了参数中的position属性,将js中的position值改为fixed; 6、增加了事件执行完之后的回调事件参数onend v0.3 : **v0.3 2016年10月6日 -- by yb changelog 1、增加参数 numfly ;可配置飞入元素完成后是否显示“+1”的元素 2、优化飞入元素终点x位置 */ ;(function($){ $.extend($.fn,{ shoping:function(o){ o= $.extend({ cartbox:'.y_rtcart',//目标飞入对象 cartnumber:'',//显示购物车数量的元素 imgflyclass:"y_flyimg",//飞入到购物车元素的类名 numfly:true,//添加完购物车后,是否显示"+1"元素 numflyclass:"y_flynum",//添加完购物车后,显示"+1"元素的类名 star_x:0,//飞入元素的起点x轴位置 star_y:0,//飞入元素的起点y轴位置 end_y_offset:0,//飞入元素的终点y轴偏移值 imgflytime:1000,//飞入对象飞到购物车时间 imgdowtime:500,//飞入对象在购物车下沉时间 numuptime:1000,//+1字符上移时间 onend: $.noop }, o || {}); var self=this; var sch=$(window).scrolltop(), end_x = $(o.cartbox).offset().left+($(o.cartbox).width()-24)/2, end_y = $(o.cartbox).offset().top-sch+o.end_y_offset; //添加飞入的商品 var $obj = $(self).clone().addclass(o.imgflyclass); $obj.css({'left': o.star_x,'top': o.star_y,'position':'fixed'}).appendto($('body')).animate({'left': end_x,'top': end_y-20,'width':20,'height':20},o.imgflytime,function() { //移动到购物车上方 $obj.stop(false, false).animate({'top': end_y,'opacity':0},o.imgdowtime,function(){ //移进到购物车里面并淡出 $obj.remove(); //移除飞入的元素 if(o.cartnumber){ var num=number($(o.cartnumber).text());//把对象的值转化为数字 $(o.cartnumber).text(num+1); //购物车的数量+1 }; if(o.numfly){ var $flynum = $("+1"); $flynum.css({'left': end_x,'top': end_y,'position':'fixed'}).appendto($('body')).animate({'top': end_y-20,'opacity':0},o.numuptime,function(){ o.onend.apply(this); //结束的回调事件 }); }else{ o.onend.apply(this); //结束的回调事件 } }); }); } }); })(jquery);