美化的checkbox样式,用jQuery关联label和input

本来label和input可以用for属性来关联的,只需要通过css样式就能达到美化的效果。例如:

25cfb87967821f8e31992aa34606c9bc3bb.jpg

这种效果就是用纯css样式完成的,html代码如下:

<div class="RadioStyle">
  <input type="radio" name="Storage" id="model1" />
  <label for="model1">iPhone 6s</label>
</div>

css代码如下:

.RadioStyle input {
	display: none
	}
	
.RadioStyle label {
	background-color: #EEEEEE;
	border: #EEEEEE solid 1px;
	padding: 6px 20px;
	border-radius: 4px;
	line-height: 36px;
	margin: 2px;
}

.RadioStyle input:checked + label
	{background: transparent url('../assets/img/checkOrange.png') no-repeat 10px center;
	background-size: 10px 8px;
	color: #ED7161;
	border: #ED7161 solid 1px;
	padding: 6px 10px 6px 30px;
}

通过input:checked + label就可以完成样式的变化。

但是问题总不会那么容易就让你解决的…由于我们公司用的是dojo框架,导致这些代码在项目中根本不好使!!!label选择没有反应,根本触发不了input的选中状态,所以这个时候就需要调动自己的大脑了,想想还是得用js完成,正好项目引入了jQuery,就用jQuery来写吧^^

jQuery代码如下:

var inputs = $("父元素 input");//选中所有的input
inputs.click(function() {//循环操作
  if($(this).next().hasClass("active")){//label被选中时点击
    //取消选中input,并移出选中样式
    $(this).prop('checked', false);
    $(this).next().removeClass('active');
  }else {
    //选中input,并添加选中样式
    $(this).prop('checked', true);
    $(this).next().addClass('active');
  }
});

由于我们项目还要求可以重置,可以完成后传参到后台获取数据

a836e03215513ccced0df081b9ea48030dd.jpg

所以,还有两个函数需要完成:

$('.courseStudyNote-resetBtn').click(function() {
  //console.log('重置');
  $("#courseSelectStuManageMenu input").prop('checked', false);//将所有input都取消选中
  $("#courseSelectStuManageMenu label").removeClass('active');//移出选中样式
});

$('.courseStudyNote-completeBtn').click(function() {
  //console.log('完成');
  //隐藏遮罩层
  $("#mask").hide();
  $("#" + id).slideUp();
  $(obj).css('background-image', 'url(eol85/image/arrow-down.png)');

var classCheck = $("#classBox input[type='checkbox']:checked"),//班级下的checkbox
    groupCheck = $("#groupBox input[type='checkbox']:checked"),//小组下的checkbox
    classCheckVal = [],
    groupCheckVal = [] ;
for(var i = 0; i < classCheck.length ; i++ ){
  classCheckVal.push($(classCheck[i]).val());
}
console.log('class:'+classCheckVal);
for(var j = 0; j < groupCheck.length ; j++ ){
  groupCheckVal.push($(groupCheck[j]).val());
}
console.log('group:'+groupCheckVal);

var postParam={//参数
  "htwId": id,
  "commit": 1,
  "classnums": classCheckVal,
  "groupIds": groupCheckVal
};
getData('/tea/courseHomeworkAnswerList.do', postParam, '/homework/tea/homeworkCommitList',null,null);

 

转载于:https://my.oschina.net/u/3367481/blog/2250810

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值