1、在你的點(diǎn)擊事件中加上一個(gè)判斷,假設(shè)產(chǎn)生動(dòng)畫效果目標(biāo)的是#aa這個(gè)節(jié)點(diǎn),那么你要加上這個(gè)判斷
if(!$("#aa").is(":animated")){
//執(zhí)行你的操作
}
他會(huì)確保你的動(dòng)畫只會(huì)在上一個(gè)動(dòng)畫結(jié)束后才能產(chǎn)生 ,可以保持動(dòng)畫的完整性,但是連續(xù)點(diǎn)擊時(shí)會(huì)有反映遲鈍的感覺
2、$("#aa").stop(true,false).animate({...},1000);
這個(gè)則是會(huì)強(qiáng)制你的上一動(dòng)畫立即結(jié)束并到達(dá)動(dòng)畫執(zhí)行結(jié)束時(shí)狀態(tài)同時(shí)來(lái)運(yùn)行下一次動(dòng)畫,會(huì)造成動(dòng)畫脫節(jié)不太美觀,但是反應(yīng)迅速
說(shuō)到這里我們解釋下stop()這個(gè)函數(shù)的用法。
stop 是jQuery中用于控制頁(yè)面動(dòng)畫效果的方法。運(yùn)行之后立刻結(jié)束當(dāng)前頁(yè)面上的動(dòng)畫效果。
stop在新版jQuery中添加了2個(gè)參數(shù):
第一個(gè)參數(shù)的意思是是否清空動(dòng)畫序列,也就是stop的是當(dāng)前元素的動(dòng)畫效果還是停止后面附帶的所有動(dòng)畫效果,一般為false,跳過(guò)當(dāng)前動(dòng)畫效果,執(zhí)行下一個(gè)動(dòng)畫效果;
第二個(gè)參數(shù)是是否將當(dāng)前動(dòng)畫效果執(zhí)行到最后,意思就是停止當(dāng)前動(dòng)畫的時(shí)候動(dòng)畫效果剛剛執(zhí)行了一般,這個(gè)時(shí)候想要的是動(dòng)畫執(zhí)行之后的效果,那么這個(gè)參數(shù)就為true。否則動(dòng)畫效果就會(huì)停在stop執(zhí)行的時(shí)候
3、第三種方法應(yīng)用就需要設(shè)置一個(gè)判斷是否處于動(dòng)畫的標(biāo)志,一般是一個(gè)點(diǎn)擊事件執(zhí)行N多個(gè)步驟的動(dòng)畫之后然后跳到下一個(gè)動(dòng)畫。
var flag = false;
function aa(){
if(flag) return;//這里指當(dāng)這個(gè)標(biāo)志flag為真的時(shí)候,直接返回,不執(zhí)行當(dāng)前的這個(gè)動(dòng)畫。
flag=true;//這里是在執(zhí)行這個(gè)動(dòng)畫的最開始的時(shí)候把標(biāo)志flag設(shè)置為真,在這個(gè)動(dòng)畫沒執(zhí)行完之前這個(gè)值一直為真,當(dāng)下次運(yùn)行這個(gè)函數(shù)的時(shí)候,由于flag值為真,也不會(huì)執(zhí)行。必須等到這個(gè)函數(shù)執(zhí)行完之后才會(huì)再次執(zhí)行這個(gè)動(dòng)畫。
……………….
………………..
………………..
$(“#aa”).animated({“l(fā)eft”:”100″},1000,function(){
………………….
flag=false;//回到最初始狀態(tài),也是也表示這一輪動(dòng)畫執(zhí)行完畢。
});
}