まず第一に、私は実際にはユーザビリティの問題からこれを行うことを避けたいと思いますが、それでも読みたい場合は読み進めてください。
これを達成するのは実際には非常に難しいですが、可能です。私のソリューションでは、個々の ID をチェックボックスに割り当てる必要がありません。
基本的に、トグル クラスを使用して、CSS の background-position プロパティで配置する「オン」および「オフ」状態のイメージ スプライトが必要です。次に、次の jQuery を使用すると、画像の状態を交換できるだけでなく、フォームを使用するためにそれぞれのチェックボックスがオンまたはオフになっていることを確認できます。「実際の」チェックボックスは非表示になっていますが、機能は残っていることに注意してください。
<form>
<input type="checkbox" class="custom" />
</form>
<style type="text/css">
.checkbox {
clear:left;
float:left;
background:url('your_image');
background-position:top;
width:20px;
height:20px;
display:block;
}
.toggled {
background-position:bottom !important;
}
</style>
$(document).ready(function () {
var checkboxes = $('form .custom'),
custom = $('<span></span>').addClass('checkbox');
checkboxes.before(custom);
checkboxes.css('visibility', 'hidden');
$('.checkbox').click(function () {
$(this).toggleClass('toggled');
var isChecked = $(this).next(':checkbox');
var value = isChecked.prop('checked') ? 'true' : 'false';
if (value == 'false') {
isChecked.prop('checked', true);
} else {
isChecked.prop('checked', false);
}
});
});
もちろん、正確なニーズに合わせて CSS を編集する必要があります。このタスクは一見簡単ではなかったので、これが役立つことを願っています。