Re: [ js ] jquery live event的問題

看板Ajax作者 (冷杉林)時間15年前 (2010/04/18 00:52), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串4/5 (看更多)
如果不用remove的code: var count=0; $('.player .card').live( 'click', function() { var s = $(this) inhand = s.parent().hasClass('hand'), ontable = s.parent().hasClass('table'); //r = s.clone(); count++; if ( inhand ) { s.appendTo('.player .table'); } else if ( ontable ) { s.appendTo('.player .hand'); } //s.remove(); alert(count); }); 剛剛發現其實這樣也可以, 只不過牌會馬上移回來。 還是老問題…點一下會作兩次。 ※ 引述《rexkimta (冷杉林)》之銘言: : HTML大概是這樣: : <div class="player"> : <div class="table"> : </div> : <div class="hand"> : <div class="card"><img scr="..." /></div> : </div> : </div> : 目標就是點div.card時, : 如果它在.hand裡,就移到.table, : 反之亦然。 : remove是因為要有移動的感覺, : 所以某張牌被append到另一邊時, : 在這邊的就要被remove掉。 : ※ 引述《tomin (Schrödinger's cat)》之銘言: : : 我試不出你說的問題 都只alert 1次 : : 是不是多提供點資訊呢 例如HTML長怎樣? : : 無論是模仿你的寫法 (我尤其不懂為什麼要remove 移掉後就不能live click了呀) : : <script type="text/javascript"> : : $(function(){ : : var count=0; : : $("#a").live("click",function(){ : : var s=$(this); : : r = s.clone(); : : s.remove(); : : count++; : : ('#b').append(r); : : alert(count); : : }); : : }); : : </script> : : <div id="a">aaaa</div> : : <div id="b">bbbb</div> : : 或是類似的寫法 : : $(function(){ : : var count=0; : : $("#a").live("click",function(){ : : count++; : : $("#a").clone().appendTo('#b'); : : alert(count); : : }); : : }); : : </script> : : <div id="a">aaaa</div> : : <div id="b">bbbb</div> : : 看起來live, clone, remove都不會造成有兩次的問題。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.217.84

04/18 01:17, , 1F
你自己複製一下貼上來的code 還是只會alert 1次呀
04/18 01:17, 1F


04/18 01:28, , 3F
我試是只有1次呀
04/18 01:28, 3F

04/18 01:34, , 4F
耶,我發現問題在那了…我這段程式碼寫在ajaxcomplete裡
04/18 01:34, 4F

04/18 01:35, , 5F
把這段寫在$.getjson的callback裡就可以了……
04/18 01:35, 5F

04/18 01:36, , 6F
和我之前以為的問題點不一樣= = 不過還是不知道為什麼會
04/18 01:36, 6F

04/18 01:36, , 7F
這樣。
04/18 01:36, 7F

04/18 01:37, , 8F
另外,.card裡的圖檔檔名是透過ajax抓回來的。
04/18 01:37, 8F

04/18 01:38, , 9F
而.card是ajax抓完後才產生的,所以要寫在callback裡。
04/18 01:38, 9F
文章代碼(AID): #1BoUT0xU (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1BoUT0xU (Ajax)