Home > Article > Web Front-end > Beautiful radio button RadioButton customized based on jquery
Continue to share web front-end custom controls. The control I want to share today is a radio button. I hope it will be useful to you. If you have any good suggestions, I hope you can leave me a message. The code is as follows:
Html code is as follows:
Copy code The code is as follows:
<p style="margin:50px;float:left;"> <b class="radio" _txt="单选我"></b> <b class="radio" _txt="单选你"></b> <b class="radio" _txt="单选他"></b> </p>
Css code is as follows:
Copy Code The code is as follows:
.radio{float:left;background:url(/img/Icon_BG.png);} .radio{width:14px;height:14px;background-position:0px -58px;cursor:pointer;font-size:9px;} .radio.checked{background-position: -15px -58px;} .radio_txt{float:left;margin:0px 0 0 10px;cursor:pointer;line-height:14px;font-size:12px;} .radio_txt .radio{margin-right:5px;}
Js part code:
1. Custom radio button class
Copy code The code is as follows:
//单选项 var RadioButton = function () { this.obj; var _this = this, _obj; //初始化 this.init = function () { _obj = _this.obj; var tem = _obj.length > 1 ? _obj.eq(0) : _obj; if (tem.attr('class').indexOf('radio') == -1) { showMessage("控件属性设置有误:部分控件并不是单选项!"); return; } //单选事件 var click_fun = function (obj) { if (obj.parent().attr('class') == 'radio_txt') { obj.parent().parent().find('.radio_txt .radio').removeClass('checked'); } else obj.siblings('.radio').removeClass('checked'); obj.addClass('checked'); _this.click_callback(); }; //设置有文字单选项 if (_obj.attr('_txt') != undefined) { _obj.each(function (i) { var radio = _obj.eq(i); radio.wrapAll('<font class="radio_txt"></font>'); //文本单击事件 radio.parent().append(radio.attr('_txt')).click(function () { click_fun(radio); }); }); } else//对象点击事件 _obj.unbind('click').click(function () { click_fun($(this)); }); } //点击回调事件 this.click_callback = function () { } }
2. Instantiation:
Copy code The code is as follows:
//初始化单选框 var radio = new RadioButton(); radio.obj = $('.radio'); radio.init();
Sample image:
Style collection picture: