看板 Ajax 關於我們 聯絡資訊
我做了一個選單 點了之後會有背景淡入淡出 同時也淡入一個視窗框,內容用load來的 load後再用if else來判斷是否此頁需要用after加入其他tag 但若使用者亂點,動畫就會亂跑 目前解法是在動畫前先加個stop。 #obj.stop().fadeIn(); 不知這種方法是否正確。 但load+after我就解不開了 譬如 load(123.html) --> <div>123</div> after('<img />') --> <div>123</div><img /> 但若亂點,就會有重複after的問題 --> <div>123</div><img /><img /> 這該怎麼避免? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.123.131
mrbigmouth:在click function最前方加判斷式 只要還有動畫進行中 03/25 10:57
mrbigmouth:就return 03/25 10:57
不好意思,我能力不太夠,看不懂。 可以寫個範例嗎? 我目前大概是這樣: $("#menu").click({ var idx = $(this).index(); $("#info").load("view/"+idx+".html,function({ if( idx == 6 ){ $("#info").after("<img />"); } })); }) 亂點的話會變得像這樣: <section id="info"> <div>This is load html</div> <img /> <img /> <--亂點多出來的tag </sectino> ※ 編輯: Qiqi 來自: 114.41.106.23 (03/26 19:40)
kerash:加個 flag, 例如 click 前判斷flag==false執行 true就跳過 03/26 20:07
kerash:然後在 click 事件結束後把 flag reset 03/26 20:08
var clicked = false; $("#menu").click({ clicked = true; var idx = $(this).index(); $("#info").load("view/"+idx+".html,function({ if( idx == 6 && clicked == true ){ $("#info").after("<img />"); clicked = false; } })); }) 類似這樣嗎? ※ 編輯: Qiqi 來自: 114.41.106.23 (03/26 20:17)
kerash:大致上是如此,不過 load 中的 if 不用特地加 click==true 03/26 20:33
kerash:把 reset 放在 if 外面就可以了 03/26 20:34
kerash:否則當你 idx 不等於 6 時就會因為 flag = false 而無反應 03/26 20:34
kerash:另外在 click 後的第一步先判斷 if(click==true) 再執行 03/26 20:35
再修一次,把clicked改flag好了,不然會把click跟clicked搞混 var flag = true; $("#menu").click({ if(flag){ flag = false; var idx = $(this).index(); $("#info").load("view/"+idx+".html,function({ if( idx == 6){ $("#info").after("<img />"); } })); flag = true; } }) 第一步先if(flag) 是因為if以外就算只有 a=1 ,被亂點還是會去跑 雖然不影響程式的結果,但會吃資源,是嗎? ※ 編輯: Qiqi 來自: 114.41.105.162 (03/26 21:50)
kerash:如果不先if的話,就一樣會執行load功能,怕會有錯 03/26 21:58
kerash:因為我不知道你的 load 會是甚麼東西,但這樣會正確點 03/26 21:58
Qiqi:謝謝 03/27 19:32