仕様がちょっとおかしいのでまともなUIにならないですね
とくに、2個目をチェックしたあとに、外して再度別のチェックを
つけたりするとぼろぼろです
CSS
1.pink{background-Color:pink;}
2.aqua{background-Color:aqua;}
3
javascript
1$(function(){
2 $('input[name=check_fluits]').change(function(){
3 var checked = $('input[name=check_fluits]:checked');
4 switch(checked.length) {
5 case 0:
6 break;
7 case 1:
8 $('#output1').html($(this).prop('checked')?$(this).siblings().find('.i').clone():"");
9 break;
10 case 2:
11 $('#output2').html($(this).prop('checked')?$(this).siblings().find('.i').clone():"");
12 break;
13 default:
14 $(this).prop("checked",false);
15 alert('もうダメ!');
16 break;
17 }
18 });
19});
HTML
1<div class="check_wrap">
2 <ul class="list">
3 <li><input id="fluits_apple" class="check_fluits" name="check_fluits" value="apple" type="checkbox">
4 <label for="fluits_apple" class="check_label">
5 <span class="i apple">1</span>
6 </label>
7 </li>
8 <li><input id="fluits_grape" class="check_fluits" name="check_fluits" value="grape" type="checkbox">
9 <label for="fluits_grape" class="check_label">
10 <span class="i grape">2</span>
11 </label>
12 </li>
13 <li><input id="fluits_banana" class="check_fluits" name="check_fluits" value="banana" type="checkbox">
14 <label for="fluits_banana" class="check_label">
15 <span class="i banana">3</span>
16 </label>
17 </li>
18 <li><input id="fluits_kiwi" class="check_fluits" name="check_fluits" value="kiwi" type="checkbox">
19 <label for="fluits_kiwi" class="check_label">
20 <span class="i kiwi">4</span>
21 </label>
22 </li>
23 </ul>
24</div>
25
26
27<div class="output">
28 <p class="pink">1つ目のチェック画像を、1つだけピンクの中にクローン
29 <span id="output1"></span></p>
30 <p class="aqua">2つ目のチェック画像を、1つだけ水色の中にクローン
31 <span id="output2"></span></p>
32</div>
改訂版
ざっと仕様を入れ込んでみました
もう少しスマートにできそうですがとりあえず動くとは思います
CSS
1.pink{background-Color:pink;}
2.aqua{background-Color:aqua;}
3
javascript
1$(function(){
2 $('input[name=check_fluits]').change(function(){
3 var clone=$(this).siblings().find('.i>img').clone();
4 if($('input[name=check_fluits]:checked').length>2) {
5 $(this).prop("checked",false);
6 alert('もうダメ!');
7 return false;
8 }
9 if($(this).prop('checked')){
10 $('#output1,#output2').filter(function(){
11 return $(this).html()=="";
12 }).eq(0).html(clone);
13 }else{
14 $('#output1,#output2').has('img[src="'+clone.attr('src')+'"]').html("");
15 }
16 });
17 $('input[name=check_fluits]').prop('checked',false).filter('[value=apple],[value=banana]').prop('checked',true).trigger("change");
18});
html
1<div class="check_wrap">
2 <ul class="list">
3 <li><input id="fluits_apple" class="check_fluits" name="check_fluits" value="apple" type="checkbox">
4 <label for="fluits_apple" class="check_label">
5 <span class="i apple"><img src="apple.jpg" alt="りんご"></span>
6 </label>
7 </li>
8 <li><input id="fluits_grape" class="check_fluits" name="check_fluits" value="grape" type="checkbox">
9 <label for="fluits_grape" class="check_label">
10 <span class="i grape"><img src="grape.jpg" alt="ぶどう"></span>
11 </label>
12 </li>
13 <li><input id="fluits_banana" class="check_fluits" name="check_fluits" value="banana" type="checkbox">
14 <label for="fluits_banana" class="check_label">
15 <span class="i banana"><img src="banana.jpg" alt="バナナ"></span>
16 </label>
17 </li>
18 <li><input id="fluits_kiwi" class="check_fluits" name="check_fluits" value="kiwi" type="checkbox">
19 <label for="fluits_kiwi" class="check_label">
20 <span class="i kiwi"><img src="kiwi.jpg" alt="キウイ"></span>
21 </label>
22 </li>
23 </ul>
24</div>
25
26
27<div class="output">
28 <p class="pink">1つ目のチェック画像を、1つだけピンクの中にクローン
29 <span id="output1"></span></p>
30 <p class="aqua">2つ目のチェック画像を、1つだけ水色の中にクローン
31 <span id="output2"></span></p>
32</div>
imgを使わない
ちょっと誤解していました、あくまでspanのみで画像を処理しているのですね
ではこんな感じで
※今回はとりあえずcssにはbackground-colorを入れておきます
CSS
1.pink{background-Color:pink;}
2.aqua{background-Color:aqua;}
3.i{display:block;border:1px solid;height:100px;width:100px;}
4.apple{background-Color:red;}
5.grape{background-Color:fuchsia;}
6.banana{background-Color:yellow;}
7.kiwi{background-Color:lime;}
javascript
1$(function(){
2 $('input[name=check_fluits]').change(function(){
3 var clone=$(this).siblings().find('.i').clone();
4 if($('input[name=check_fluits]:checked').length>2) {
5 $(this).prop("checked",false);
6 alert('もうダメ!');
7 return false;
8 }
9 if($(this).prop('checked')){
10 $('#output1,#output2').filter(function(){
11 return $(this).html()=="";
12 }).eq(0).html(clone);
13 }else{
14 console.log($.map(clone.prop('classList'),function(x){return "."+x;}).join(""));
15 //console.log(clone.prop('classList').map(function(){return "."+$(this);}));
16 $('#output1,#output2').has($.map(clone.prop('classList'),function(x){return "."+x;}).join("")).html("");
17 }
18 });
19 $('input[name=check_fluits]').prop('checked',false).filter('[value=apple],[value=banana]').prop('checked',true).trigger("change");
20});
21
HTML
1<div class="check_wrap">
2 <ul class="list">
3 <li><input id="fluits_apple" class="check_fluits" name="check_fluits" value="apple" type="checkbox">
4 <label for="fluits_apple" class="check_label">
5 <span class="i apple"></span>
6 </label>
7 </li>
8 <li><input id="fluits_grape" class="check_fluits" name="check_fluits" value="grape" type="checkbox">
9 <label for="fluits_grape" class="check_label">
10 <span class="i grape"></span>
11 </label>
12 </li>
13 <li><input id="fluits_banana" class="check_fluits" name="check_fluits" value="banana" type="checkbox">
14 <label for="fluits_banana" class="check_label">
15 <span class="i banana"></span>
16 </label>
17 </li>
18 <li><input id="fluits_kiwi" class="check_fluits" name="check_fluits" value="kiwi" type="checkbox">
19 <label for="fluits_kiwi" class="check_label">
20 <span class="i kiwi"></span>
21 </label>
22 </li>
23 </ul>
24</div>
25
26
27<div class="output">
28 <p class="pink">1つ目のチェック画像を、1つだけピンクの中にクローン
29 <span id="output1"></span></p>
30 <p class="aqua">2つ目のチェック画像を、1つだけ水色の中にクローン
31 <span id="output2"></span></p>
32</div>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/17 12:16
2018/04/17 12:41
退会済みユーザー
2018/04/17 12:51 編集
退会済みユーザー
2018/04/18 02:20 編集
2018/04/18 03:55
退会済みユーザー
2018/04/18 13:17