2012-04-23 13 views
0

私はdivのリストを持っています。これは基本的にユーザーがそれらのいずれかをクリックした例です。例:div datはdata-square = 0-1を持ち、div data-square = class attrとdata-squareの値がサーバーに送信され、サーバーがサーバーを置き換えるかどうかがサーバーによって承認されます。交換のために。それが受信すると、それはこのようにする必要がありjquery replacement attr

<div class="column" data-square="0-1"> 
<div class="GREEN"></div> 
</div> 

<div class="column" data-square="0-5"> 
    <div class="GREEN"></div> 
</div> 

<div class="column" data-square="0-8"> 
    <div class="YELLOW"></div> 
</div> 

:しかし、第一の内側のdiv attrがクリックされ、そしてサーバーに送信される前に、最初のものは=空

をクラスを持つべきである二番目のザッツに置き換える必要がありますバックサーバー

<div class="column" data-square="0-1"> 
    <div class="EMPTY"></div> 
</div> 
<div class="column" data-square="0-5"> 
    <div class="GREEN"></div> 
</div> 
<div class="column" data-square="0-8"> 
    <div class="GREEN"></div> 
</div> 

が、私は、サーバーから受信した、 からそれは、ユーザが拳の時間をクリックしたクラスと題しGREENを交換する必要があり、すべてのクラスはGREENと題し削除されます。

私は最初のdivをサーバに送付せずに空にすることができます。 しかし、来ると、クラス全体を受け取ったときにアクションを実行すると削除されます。

$.post("check.php", { from:from,to:to,classFrom:$classFrom,classTo:classTo}, 
     function(data) { 

    $($classFrom).children().removeAttr('class').addClass('EMPTY'); 
      }) 
+3

質問は何ですか? –

+0

クラスセレクタは定義上、同じクラスのすべてのDOM要素を選択します。 $ classFromはどのように定義されていますか? $ classFromが$( 'GREEN')として定義されている場合、説明したようにGREENのクラスを持つすべての要素が選択されます。 –

+0

だから、唯一の解決策はdiv全体をコピーすることでしょうか? – user1349526

答えて

2

わずか2行でそれを行う、古いを削除し、新しいを追加します。

$($classFrom).children().removeClass(classFrom); 
$($classFrom).children().addClass('EMPTY'); 
+2

または単に1行で '$($ classFrom).children()。removeClass(classFrom).addClass(" EMPTY ")' –

+0

それは私にclassFromを与えません。 – user1349526

+0

あなたはサーバから戻ってきている値は何ですか? ? (from:from、from:to、classFrom:$ classFrom、classTo:classTo)最初にクリックされたデータの正方形を格納する –