使用input radio一些东西

label包围input时,绑定的事件会执行两次,

return false或者判断event.target.tagName来判断点击的元素
html

<label class="radio-inline">
<input type="radio" name="sex" id="inlineRadio1" value="1"> 
<span>男</span>
</label>

js部分

    $(".radio-inline").on("click",function(e){
        if(e.target.tagName !== "input"){
             return false
         }
         //要执行的代码
    })

觉得radio不好看,想做成类似按钮一样的东西

image.png
<div>
用户性别:
      <label class="radio-inline">
      <input type="radio" name="sex" id="inlineRadio1" value="1"> 
      <span class="sex-btn">男</span>
   </label>
   <label class="radio-inline">
      <input type="radio" name="sex" id="inlineRadio2" value="2"> 
      <span class="sex-btn">女</span>
  </label>
  <label class="radio-inline">
    <input type="radio" name="sex" id="inlineRadio2"  value="3" checked> 
    <span class="sex-btn">保密</span>
  </label>
</div>

css部分

.sex-btn{
    background: #fff;
    display:inline-block;
    padding:5px 10px;
    border-radius:5px;
    border:1px solid #ccc;
}
.radio-inline.active > .sex-btn{
    background: #22A1D6;
    color:#fff
}
.sex-radio-container>.radio-inline{
    padding:0px; 
}
.radio-inline input{
    display:none;
}

js部分,使用jquery

    $(".radio-inline").on("click",function(e){
        if(e.target.tagName === "INPUT"){//点击时首先是点击span,所以要进行判断,防止多次执行
            let fatherEle = $(e.target).parent();s
            fatherEle.addClass("active").siblings().removeClass("active"); //给自己父元素加上active去除父元素其兄弟元素的active
         }
    })

使用jquery获取被选中的值

$("input[name='sex']:checked").val()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容