2012-04-22 64 views
0

我有一系列的div,代表类似于国际象棋棋盘。但这是一个有点棘手的国际象棋。基本上用户点击一块,并点击敌人的一块。如果它可以杀死。它应该把它移到敌人的位置。敌人应该被删除。jquery替换问题

<div class="column" data-square="4-4"> 
<div class="white-king lol">a</div> 
</div> 
<div class="column" data-square="4-5"> 
<div class="black-pawn lol">b</div> 
</div> 
<div class="column" data-square="4-6"> 
<div class="blue lol">c</div> 
</div> 

//所以当用户第一次点击白时,我们得到数据平方,将它分配给一个变量$ from,然后点击敌方黑兵。在服务器上做了一些验证,并且应该将方块的内部div移动到方形的内部div = 4-5,方块的内部div = 4-5应该被删除,并且内部div广场= 4-4应presnet

我试过使用jquery克隆。但它不工作了好 小提琴:http://jsfiddle.net/jm4eb/13/

+1

我甚至都不会用'.clone'。只是在内容和课堂上工作。例如假设“a”移动到“b”:'$ to.addClass('white-king')。text($ from.text())''then'$ from.removeClass('white-king')。text '')' – 2012-04-22 22:31:37

+0

不要使用额外的div来插入克隆的元素.. http://jsfiddle.net/gaby/jm4eb/15/ – 2012-04-22 22:36:46

回答

0

我个人也不会太弯曲变形与另一个替换一个元素。我只看着将属性从一个元素交换到另一个元素。从一个元素中删除white-king类并将其添加到另一个元素。

+0

感谢您的回复。我会研究如何去做。这听起来对我来说最聪明的解决方案 – user1349526 2012-04-22 22:35:34

+1

如果我可以投票,相信我我不会停止投票!你是一个真正的程序员。 – user1349526 2012-04-22 23:01:00

+0

谢谢,很高兴我能帮上忙。 :) – kim3er 2012-04-23 08:08:49

0

这不是仍然是很好的方式,但你可以尝试

(function() { 

     var from = null; 
      var $change =null; 
     var to = null; 

     $(".column").click(function(){ 
      if(from === null) 
      { 
       $(this).css("background-color","yellow"); 

       from = $(this).data('square'); 
        $change= ($('<div/>').append($(this).clone(true).children()).html()); 


      } 
      else 
      { 

       to = $(this).data('square'); 
       $(this).html("").html($change); 
       $('div[data-square="'+from+'"]').html("<div class=lol>empty</div>").css("background-color",""); 
       from = to = null; 
      } 
     }); 

    }());​