我在 balsamiq 中做了模型,他们有这个不错的小部件,它
- 允许从两个值中选择一个值。在触摸屏上工作得非常好
- 可用于显示两个值并突出显示选定的值
例子:
通过 HTML/CSS 和 JS 实现类似于图片中所示的小部件的选项有哪些?
我在 balsamiq 中做了模型,他们有这个不错的小部件,它
例子:
通过 HTML/CSS 和 JS 实现类似于图片中所示的小部件的选项有哪些?
我在下面介绍的方法遍历所有fieldset
元素,如果其中的所有输入都是 of type="radio"
,则隐藏它们并使用相关元素中的文本将span
元素 (of ) 附加到它们的位置。它还将事件绑定到附加元素,并在原始s 上触发事件,并将“已检查”类名称添加到单击/触摸元素,同时将该类从其兄弟元素中删除:class="buttonRadio"
label
click
span
change
input
$('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;
}
编辑对 jQuery 进行了一些修改:
$(this)
在此版本中稍早缓存了对象,legend
我在第一个化身中分配但忘记实际使用的变量......叹息。还隐藏了实际<legend></legend>
元素:
$('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');
参考:
addClass()
.attr()
.click()
.css()
.each()
.eq()
.find()
.on()
.removeClass()
.siblings()
.text()
.trigger()
.