javascript - JQ的两段代码方法一样,元素不一样,如何简化代码

查看:114
本文介绍了javascript - JQ的两段代码方法一样,元素不一样,如何简化代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

       <div class="innercontent innercontent-a">
             <div class="wrap-usermobile">
                 <label class="user-info">账 户</label>
                 <input type="tel" name="mobile" maxlength="11" value="" >
            </div>
            <div class="submit-btn">                        
                  <button type="button"  class="btn-stepa" >下一步</button>
            </div>
    </div>
    
    <div class="innercontent innercontent-b" >                
         <div class="wrap-codep">
             <label class="user-info">验证码</label>
             <input type="text" name="codep" >                        
         </div>
        <div class="submit-btn">                        
             <button type="button"  class="btn-stepb">下一步</button>
        </div>
    </div>




     $("input[name='mobile']").on('input propertychange',function(){
           var mobile = $(this).val();
          if(mobile!=""){
                     $(".btn-stepa").removeAttr("disabled").css('background','#6f60cf');               
                   }
               else{
                   $(".btn-stepa").attr('disabled',"disabled").css('background','#a396f7');               
                }
       });
       
      $("input[name='codep']").on('input propertychange',function(){
           var codep = $(this).val();
           if(codep!=""){
                     $(".btn-stepb").removeAttr("disabled").css('background','#6f60cf');               
                   }
               else{
                   $(".btn-stepb").attr('disabled',"disabled").css('background','#a396f7');               
                }
        });

本人新手,请不要给负分哦~

解决方案

$("input[name='mobile'],input[name='codep']").on('input propertychange',function(){
   var $this = $(this),
       val = $this.val(),
       $btn = $this.closest(".innercontent").find("button"); //这里的button标签最好有个类名来限制一下,比如button.btn-step,不然如果有多个button标签就会有问题。
   if(val!=""){
         $btn.prop('disabled',false).css('background','#6f60cf');               
   }else{
       $btn.prop('disabled',true).css('background','#a396f7');               
    }
});

attr和prop的用法是不同的,你可以看看jquery的官方文档有解释英文版,这是中文版

关于你在答案一种的评论,你的这个.btn-stepa和.btn-stepb是可以优化的,前提是你让我看一下你的html结构。

这篇关于javascript - JQ的两段代码方法一样,元素不一样,如何简化代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆