私は、彼らは2つの値のうちの、値を選択することが可このバルサミコ制御を表示するHTML/JSウィジェットはどれですか?
- この素敵なウィジェットを、持っているbalsamiq &でモックアップをしました。
- が選択された1つの
例の強調表示&を2つの値を表示するために使用できるタッチスクリーン上で本当に素敵な作品:HTML/CSSを経由して写真のようにオプションが同様のウィジェットを実装するためにどのような
& JS?
私は、彼らは2つの値のうちの、値を選択することが可このバルサミコ制御を表示するHTML/JSウィジェットはどれですか?
例の強調表示&を2つの値を表示するために使用できるタッチスクリーン上で本当に素敵な作品:HTML/CSSを経由して写真のようにオプションが同様のウィジェットを実装するためにどのような
& JS?
私はすべてfieldset
要素を通じて反復の下に存在し、すべての入力がそこtype="radio"
である場合に、それらの関連label
要素からテキストを使用して、それらを非表示にし、その場所で(class="buttonRadio"
の)span
要素を追加アプローチ。また、追加span
要素にclick
イベントを結合し、元input
の上change
イベントをトリガし、また、それはその兄弟からそのクラスを除去しながら、クリックされた/触れた要素にクラス名を「確認」追加:
$('fieldset').each(
function() {
var legend = $(this).find('legend').text();
if ($(this).find('input').length == $(this).find('input[type="radio"]').length) {
var that = $(this),
len = that.find('input[type="radio"]').length;
for (var i = 0; i < len; i++) {
$('<span />')
.text($('label')
.eq(i).text())
.addClass('buttonRadio')
.attr('data-fromID',that.find('input:eq(' + i + ')').attr('id'))
.appendTo(that);
}
}
}).on('click','.buttonRadio',function(){
var id = $(this).attr('data-fromID');
$(this).addClass('checked').siblings().removeClass('checked');
$('#' + id).click().trigger('change');
}).find('label, input[type="radio"]').css('display','none');
これは、これらの要素のスタイルを、次のCSSを使用しています:
.buttonRadio {
background-color: #fff;
padding: 0.5em 1em;
border: 1px solid #000;
margin: 0.5em 0 0 0;
}
.buttonRadio.checked {
background-color: #ffa;
}
legend
変数を使用することを思い出し$(this)
オブジェクトをキャッシュされた:jQueryのを少し修正するを編集
実際には...一口を使うのを忘れてしまった。
$('fieldset').each(
function() {
var that = $(this),
legend = that.find('legend').text();
$('<span />').text(legend).addClass('legend').appendTo(that);
if (that.find('input').length == that.find('input[type="radio"]').length) {
var len = that.find('input[type="radio"]').length;
for (var i = 0; i < len; i++) {
$('<span />')
.text($('label')
.eq(i).text())
.addClass('buttonRadio')
.attr('data-fromID',that.find('input:eq(' + i + ')').attr('id'))
.appendTo(that);
}
}
}).on('click','.buttonRadio',function(){
var id = $(this).attr('data-fromID');
$(this).addClass('checked').siblings().removeClass('checked');
$('#' + id).click().trigger('change');
}).find('label, input[type="radio"], legend').css('display','none');
はまた、実際の<legend></legend>
要素を隠しました。
参考文献:
addClass()
。attr()
。click()
。css()
。each()
。eq()
。find()
。on()
。removeClass()
。siblings()
。text()
。trigger()
。
あなたは何を試しましたか?検索から何かを見つけましたか? –
私はhttp://jqueryui.com/demos/button/radio.htmlを見ました。私はそれが欲しいと思っています。それでも、私はそれが良い選択か、より良い選択肢があるかどうかを知るための質問を開いた。 したがって、質問 – CuriousMind