コードパラドックスの答えを拡張し、目に見えるチェック状態の重要な機能を追加しました。これがフィドルです:http://jsfiddle.net/crowjonah/cfN5t
挿入された を再構築し、この回答.after
から大いに借りて、実際に非表示のラジオ ボタンをオンまたはオフにするクリック機能を追加し、 CSS を使用してその外観を変更する機会を提供しました。js 変数に格納された srcs を持つ実際のイメージ タグではなく、CSS 背景イメージを使用することを選択し、jQuery セレクターとして使用するクラスを各入力に追加して、イメージに変換するラジオ ボタンのみをターゲットにしました。HTMLは次のとおりです。.live
.radio-image
<label>How good?</label>
<input type="radio" class="radio-image" name="question1" id="best" value="5" />
<input type="radio" class="radio-image" name="question1" id="better" value="4" />
<input type="radio" class="radio-image" name="question1" id="average" value="3" />
<input type="radio" class="radio-image" name="question1" id="worse" value="2" />
<input type="radio" class="radio-image" name="question1" id="worst" value="1" />
スクリプト:
$(function() {
$('input[type=radio].radio-image').each(function() {
var id = this.id;
$(this).hide().after('<a class="newrad" href="#"><div class="radio" id="' + id + '"></div></a>');
});
$('.newrad').live('click', function(e) {
e.preventDefault();
var $check = $(this).prev('input');
$('.newrad div').attr('class', 'radio');
$(this).find('div').addClass('checked');
$('input[type=radio].radio-image').attr('checked', false);
$check.attr('checked', true);
});
});
およびCSS(ここで、画像とオプションでそれらのチェック状態を定義します):
label {display:block;}
.radio {
opacity: 0.5;
width: 80px;
height: 80px;
float: left;
margin: 5px;
}
.checked {opacity: 1;}
#best {background: url(http://www.placehold.it/80&text=Best);}
#better {background: url(http://www.placehold.it/80&text=Better);}
#average {background: url(http://www.placehold.it/80&text=Average);}
#worse {background: url(http://www.placehold.it/80&text=Worse);}
#worst {background: url(http://www.placehold.it/80&text=Worst);}