作者tomin (Schrödinger's cat)
看板Ajax
標題Re: [ js ] jquery live event的問題
時間Sun Apr 18 00:04:36 2010
※ 引述《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
1F:推 TonyQ:live click 是不受remove影響的 , 只要符合條件者就trigger 04/18 10:50
2F:→ tomin:本來沒想到.card是捉到複數 而this只捉到一個 04/18 11:13
3F:→ tomin:想說第一次觸發就移光光 就不會有第二次觸發 就不用live了 04/18 11:14