2016-11-07 15 views
0

できるだけ簡略化しましたが、最初にJSfiddleを見てみるのが最も良いかもしれません。 https://jsfiddle.net/27a8qypq/3/まず、ボトムボックスにある「ヨーロッパの国」のチェックボックスをチェックして、オーストリアとスペインが表示されるようにします。今、トップボックスの「ヨーロッパのみ」にチェックを入れると、オーストリアとスペインのラベル&のチェックボックスがボトムからトップボックスに移動します。アフリカ諸国のチェックボックスにもチェックが入っていれば、もちろん「エジプト」と「ナイジェリア」 が下のボックスに表示されたままでなければならないことに注意してください。また、アルファベット順に表示する国が必要です。ある部門から別の部門へのチェックボックスの選択の移動

多くの時間が経過してから、私のnoobieの脳は死んでしまいました。誰も助けることができますか?

//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js 
<label> 
    <input type="checkbox" name="colorCheckbox" id="EuropeONLY" /> 
    Europe ONLY 
</label> 

<div class="myTopBox"> 
    <label id="TextID" class="TextinTopBox">My European countries are...</label> 
</div> 
<br> 
<label> 
    <input type="checkbox" name="colorCheckbox" id="Europe" /> 
    European countries 
</label> 
<label> 
    <input type="checkbox" name="colorCheckbox" id="Africa" /> 
    African countries 
</label> 

<div class="myBottomBox"> 
    <label class="myEurope"> 
     <input type="checkbox" value="Spain"/> 
     Spain 
    </label> 
    <label class="myEurope"> 
     <input type="checkbox" value="Austria"/> 
     Austria 
    </label> 
    <label class="myAfrica"> 
     <input type="checkbox" value="Nigeria"/> 
     Nigeria 
    </label> 
    <label class="myAfrica"> 
     <input type="checkbox" value="Egypt"/> 
     Egypt 
    </label> 
</div> 

$(function() { 
    $('input[type="checkbox"]').click(function() { 
     if ($(this).attr("id") == "EuropeONLY") { 
      $(".TextinTopBox").slideToggle(200) 
     } 
    }); 
}); 

function sortByText(a, b) { 
    return $.trim($(a).text()) > $.trim($(b).text()); 
} 

var li = $(".myBottomBox").children("label").detach().sort(sortByText) 
$(".myBottomBox").append(li) 

$('input[type="checkbox"]').click(function() { 
    $('.my' + $(this).attr("id")).slideToggle(200) 
}); 

.myTopBox { 
    height: 100px; 
    width: 300px; 
    border: 1px solid green; 
} 

.TextinTopBox { 
    display: none; 
} 

.myBottomBox { 
    border: 1px solid blue; 
    height: 100px; 
    width: 300px; 
    border: 1px solid blue; 
} 

.myEurope { 
    display: none; 
} 
.myAfrica { 
    display: none; 
} 
+0

問題の説明は明らかですが、私はあなたのUIで何を達成したいのか分かりません。 「ヨーロッパのみ」は本当にチェックボックスですか、むしろボタンですか?それがボタンでない場合は、チェックを外すとどうなりますか?特定の国はなぜチェックボックスにもなりますか?設計上の考慮事項に関するいくつかの情報が役立ちます。 –

+0

ありがとうございます。あなたが想像しているように、私はプリンシパルを強調するために、より大きなコンセプトを単純化しました(UIコンセプトは、ユーザーが各国の地域グループの選択肢を組み合わせることです)。 「ヨーロッパのみ」はチェックボックスにチェックされています。チェックされていないと、ヨーロッパ諸国は前と同じようにボトムボックスに戻る必要があるからです。私が苦労している原則は、これらの国々を部門間でどのように動かすかということです。また、ヨーロッパ諸国のいずれかが刻まれている場合、それらのティックはある部門から別の部門に移動する際に維持される必要があります。 – Silverburch

答えて

0

あなたは別の場所にDOM要素をカット&ペーストするappendToを使用することができます。あなたのケースでどのように動作するかを示すfiddleを参照してください。

$('input[type="checkbox"]').click(function() { 
    if ($(this).attr("id") == "EuropeONLY") { 
    var targetBox = $(this).prop("checked") ? '.myTopBox' : '.myBottomBox' 
    $('.myEurope').appendTo($(targetBox)) 
    } 
}); 

ソートはまだ必要ですが、フィドルがあなたを始めさせるのに十分であることを願っています。

+0

ああ、今私は思考が完全に間違っていたと思う。これは素晴らしいことであり、非常に高く評価されています。 – Silverburch

+0

@Silverburch喜んで助けることができました! –