[問題] 如何防止使用者亂點?

看板Ajax作者 (潑潑)時間14年前 (2012/03/25 10:25), 編輯推噓4(407)
留言11則, 3人參與, 最新討論串1/1
我做了一個選單 點了之後會有背景淡入淡出 同時也淡入一個視窗框,內容用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

03/25 10:57, , 1F
在click function最前方加判斷式 只要還有動畫進行中
03/25 10:57, 1F

03/25 10:57, , 2F
就return
03/25 10:57, 2F
不好意思,我能力不太夠,看不懂。 可以寫個範例嗎? 我目前大概是這樣: $("#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)

03/26 20:07, , 3F
加個 flag, 例如 click 前判斷flag==false執行 true就跳過
03/26 20:07, 3F

03/26 20:08, , 4F
然後在 click 事件結束後把 flag reset
03/26 20:08, 4F
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)

03/26 20:33, , 5F
大致上是如此,不過 load 中的 if 不用特地加 click==true
03/26 20:33, 5F

03/26 20:34, , 6F
把 reset 放在 if 外面就可以了
03/26 20:34, 6F

03/26 20:34, , 7F
否則當你 idx 不等於 6 時就會因為 flag = false 而無反應
03/26 20:34, 7F

03/26 20:35, , 8F
另外在 click 後的第一步先判斷 if(click==true) 再執行
03/26 20:35, 8F
再修一次,把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)

03/26 21:58, , 9F
如果不先if的話,就一樣會執行load功能,怕會有錯
03/26 21:58, 9F

03/26 21:58, , 10F
因為我不知道你的 load 會是甚麼東西,但這樣會正確點
03/26 21:58, 10F

03/27 19:32, , 11F
謝謝
03/27 19:32, 11F
文章代碼(AID): #1FRe7-XF (Ajax)
文章代碼(AID): #1FRe7-XF (Ajax)