以下代码针对所有能使用animate()函数的样式,包括抖动,闪动等
function shake(selector,range,times,duration,mode){//juequery选择器、抖动范围、次数、每次时间、抖动样式("left"、"top"等)
var $ele=$(selector);
var range=range||30;
var times=times===0?0:(times||5);
console.log(times);
var duration=duration||200;
var mode=mode||"left";
var originPosition=parseInt($ele.css(mode))||0;
//新建对象,避免直接使用字面量无法修改键值
var obj=new Object();
//动画:前进、后退、回到原位
if(times>0){
obj[mode]=originPosition+range;
$ele.animate(obj,duration/4,function(){
obj[mode]=originPosition-range;
})
.animate(obj,duration/2,function(){
obj[mode]=originPosition;
})
.animate(obj,duration/4,function(){
//迭代函数,实现多次震动
shake(selector,range/2,times-1,duration/2,mode);
});
}
return;
}