作者rexkimta (冷杉林)
看板Ajax
标题Re: [ js ] jquery live event的问题
时间Sun Apr 18 00:36:29 2010
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)》之铭言:
: ※ 引述《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.114.217.84