(jQuery)(表单美化一)替换原生的checkbox.radio
时间:2010-08-30 来源:前端开发(想念ling)
为了是自己的系统亦或是网站更加适合自己的设计,表单的美化其实是最重要的一块,如果你是个追求完美的人,跟我一起来开始表单美化之路.
效果图:
思路:
1: 隐藏原先的checkbox,radio;
2:构造自己的checkbox,radio;
3:监听自己的checkbox,radio单击事件,并且同时改变原先checkbox,radio的选中状态。
素材:
页面结构:
<fieldset> <legend>美化radio</legend> <input type="button" value="美化radio" id="melradio"/> <div class="inputDiv"><input type="radio" name="radio" checked="checked"/>男</div> <div class="inputDiv"><input type="radio" name="radio"/>女</div> </fieldset> <fieldset> <legend>美化checkbox</legend> <input type="button" value="美化checkbox" id="melcheckbox"/> <div class="inputDiv"><input type="checkbox" name="radio" checked="checked"/>男</div> <div class="inputDiv"><input type="checkbox" name="radio"/>女</div> </fieldset>
CSS样式:
.divRadio{ width:16px; background:url(radio.png) -174px 0 no-repeat; float:left; } .divRadioCheck{ float:left; width:16px; background:url(radio.png) -158px 0 no-repeat; } .divCheck{ float:left; width:16px; background:url(checkbox.png) -16px 0 no-repeat; } .divCheckBox{ float:left; width:16px; background:url(checkbox.png) 0 0 no-repeat; } fieldset{ border:1px solid #ccc; margin:10px; padding:10px; width:400px; }
JavaScript
$(function(){ $("#melradio").click(function(){ if($('div').hasClass('divRadio')){ return; } //寻找radio元素包装 $("input:radio").each(function(){ var name=$(this).attr('name'); var dClass="divRadio"; var that=$(this); if(that.attr('checked')){ dClass="divRadioCheck"; } //隐藏原先的radio $(this).hide(); var d=$("<div/>").addClass(dClass) .hover(function(){ $(this).addClass('divRadioHover'); },function(){ $(this).removeClass('divRadioHover'); }) .click(function(){ //判断当前div的状态是否选中 if($(this).hasClass('divRadio')){ //radio的互斥特性 //去除所有的模拟radio的选中 $('div.divRadioCheck').removeClass('divRadioCheck').addClass('divRadio'); //去除所有与该radio同名的radio的选中属性 $('input:radio').find(':[name='+name+']').attr('checked',false); $(this).removeClass('divRadio').addClass('divRadioCheck'); that.attr({ checked:true }); }else{ $(this).removeClass('divRadioCheck').addClass('divRadio'); that.attr( 'checked',false); } }) that.parent().append(d); }) }); $("#melcheckbox").click(function(){ if($('div').hasClass('divCheck')||$('div').hasClass('divCheckBox')){ return; } //寻找checkbox元素包装 $('input:checkbox').each(function(){ var cClass="divCheck"; var that=$(this); if(that.attr('checked')){ cClass="divCheckBox"; } //隐藏原先的checkbox that.hide(); var e=$('<div/>').addClass(cClass) .click(function(){ if($(this).hasClass('divCheck')){ $(this).removeClass('divCheck').addClass('divCheckBox'); that.attr('checked',true); }else{ $(this).removeClass('divCheckBox').addClass('divCheck'); that.attr('checked',false); } }); that.parent().append(e); }) }) })
相关阅读 更多 +