Re: [ js ] jquery live event的問題

看板Ajax作者 (Schrödinger's cat)時間15年前 (2010/04/18 00:04), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/5 (看更多)
※ 引述《rexkimta (冷杉林)》之銘言: : //var count=0; : $('.player .card').live( 'click', function() { : var s = $(this) : inhand = s.parent().hasClass('hand'), : ontable = s.parent().hasClass('table'); : r = s.clone(); : s.remove(); : //count++; : if ( inhand ) { : $('.player .table').append(r); : } else if ( ontable ) { : $('.player .hand').append(r); : } : //alert(count); : }); : 我想寫一段code,能在點一下牌後, : 如果是在table上就回到hand : 在hand就放到table, : 成品就如上面的code。 : 現在問題是如果把count的註解部分拿掉, : click一次count會alert兩次, : 但是數字不會增加。 : 用firebug去看的話, : code也是會經過兩次。 : 雖然把count的部分註解掉看起來就完全正常, : 但是這個問題相當令人困擾…… : 另外,要達到相同效果, : 有沒有別的寫法比較不容易有問題的? : 感謝大家。 我試不出你說的問題 都只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.122.30.140

04/18 10:50, , 1F
live click 是不受remove影響的 , 只要符合條件者就trigger
04/18 10:50, 1F

04/18 11:13, , 2F
本來沒想到.card是捉到複數 而this只捉到一個
04/18 11:13, 2F

04/18 11:14, , 3F
想說第一次觸發就移光光 就不會有第二次觸發 就不用live了
04/18 11:14, 3F
文章代碼(AID): #1BoTmMJY (Ajax)
文章代碼(AID): #1BoTmMJY (Ajax)