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