SVGグラフィックを隠してアイコンを表示する必要があります。 イベントは不可視チェックボックスで処理する必要があります。問題は、onchange
イベントが発生するとすべてのチェックボックスが選択されるため、すべてのアイコンが表示され、すべての入力が選択されることです。複数のチェックボックスを含むコンテンツの表示/非表示
input[type="checkbox"]
ごとに個別にイベントハンドラを設定する方法はありますか?
var $checkbox = $('.form-control'),
$iconCheck = $('.check-circle'),
$imgSVG = $('.img');
$($checkbox).on('change', function() {
if ($(this).is(':checked')) {
$iconCheck.removeClass('d-none');
$imgSVG.addClass('d-none');
} else {
$iconCheck.addClass('d-none');
$imgSVG.removeClass('d-none');
}
});
img {
display: block;
width: 40px;
height: 40px;
}
.d-none {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="card">
<figure>
<img class="img" src="https://cdn3.iconfinder.com/data/icons/halloween-29/64/ghost-512.png" alt="">
<i class="check-circle d-none">CHECKED!</i>
</figure>
<label for="checkboxTerror">Terror</label>
<input id="checkboxTerror" type="checkbox" class="form-control">
</div>
<div class="card">
<figure>
<img class="img" src="http://icons.iconarchive.com/icons/icons8/ios7/256/Cinema-Comedy-2-icon.png" alt="">
<i class="check-circle d-none">CHECKED!</i>
</figure>
<label for="checkboxTerror">Comedy</label>
<input id="checkboxTerror" type="checkbox" class="form-control">
</div>
スクリーンショット例
はい!ありがとう@アシッド。 – Nonchalanto