作者rexkimta (冷杉林)
看板Ajax
标题Re: [ js ] jquery live event的问题
时间Sun Apr 18 00:52:12 2010
如果不用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
1F:推 tomin:你自己复制一下贴上来的code 还是只会alert 1次呀 04/18 01:17
3F:→ tomin:我试是只有1次呀 04/18 01:28
4F:→ rexkimta:耶,我发现问题在那了…我这段程式码写在ajaxcomplete里 04/18 01:34
5F:→ rexkimta:把这段写在$.getjson的callback里就可以了…… 04/18 01:35
6F:→ rexkimta:和我之前以为的问题点不一样= = 不过还是不知道为什麽会 04/18 01:36
7F:→ rexkimta:这样。 04/18 01:36
8F:→ rexkimta:另外,.card里的图档档名是透过ajax抓回来的。 04/18 01:37
9F:→ rexkimta:而.card是ajax抓完後才产生的,所以要写在callback里。 04/18 01:38