作者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