JQuery采用CSS实现DOM元素的显示和隐藏 .

本文对比了两种实现下拉框控制文本框显示隐藏的方法,一种为直接使用JavaScript,另一种则结合了jQuery与CSS。后者更易于复用且便于维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天参加了一个Code Review活动,看了一个同事的写的代码,感觉满足了当前的功能实现,但是从长远来看,无论从代码复用角度还是维护上看都显得非常差。先看看需求是什么吧。需求是通过下拉框的选择不同的选项,来显示和隐藏一个文本框。同事是这样写的:

Code 1

  1. <select  name="select" onChange="disinput(this)">  
  2.                 <option value="1">1</option>  
  3.                 <option value="2">2</option>  
  4.                 </select>  
  5. <input type="text" id="text" name="text" style="" value="" />  
  6.     
  7. <script type="text/javascript">  
  8.     function disinput(obj){  
  9.         if(obj.value==2){  
  10.             document.getElementById("text").style.display="none";  
  11.         }else{document.getElementById("text").style.display="";}  
  12.     }  
  13. </script>  
<select  name="select" onChange="disinput(this)">
                <option value="1">1</option>
                <option value="2">2</option>
                </select>
<input type="text" id="text" name="text" style="" value="" />
  
<script type="text/javascript">
    function disinput(obj){
        if(obj.value==2){
            document.getElementById("text").style.display="none";
        }else{document.getElementById("text").style.display="";}
    }
</script>

这种写法应该是所有JS初学者都习惯的思维,根据需求写一个方法实现功能即可。但我觉得如果在另外一个页面也有类似的需求,那么是不是又要把这个方法重写一遍呢,哪一天如果用户要求选择选项1就在文本框中显示XX内容,选择2显示另外的内容,那是不是所有的页面都要重新改一遍,能不能有更好的方法。这个时候可以考虑用CSS,当然是外部CSS,这里我写了一个例子是将CSS放在页面文件中了,如果实际操作肯定是放在外部CSS当中。

Code 2

  1. <html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head runat="server">  
  3.     <title></title>  
  4.     <script type="text/javascript" src="jquery.js"></script>  
  5.     <script type="text/javascript">  
  6.   
  7.         $(function () {             
  8.         });  
  9.   
  10.         function changeSel() {  
  11.             if ($("#select1").val() == 2) {  
  12.                 $("#text").addClass("class2");  
  13.             } else {  
  14.                 $("#text").removeClass("class2");  
  15.             }  
  16.         }  
  17.     </script>  
  18.     <style type="text/css">  
  19.         .class2  
  20.         {  
  21.            display:none;  
  22.         }  
  23.     </style>  
  24. </head>  
  25. <body>  
  26.     <select id="select1"  name="select" onChange="changeSel()">  
  27.                  <option value="1">1</option>  
  28.                  <option value="2">2</option>  
  29.                     </select>  
  30.     <input type="text" id="text" name="text" style="" value="" />  
  31. </body>  
  32. </html>  
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">

        $(function () {           
        });

        function changeSel() {
            if ($("#select1").val() == 2) {
                $("#text").addClass("class2");
            } else {
                $("#text").removeClass("class2");
            }
        }
    </script>
    <style type="text/css">
        .class2
        {
           display:none;
        }
    </style>
</head>
<body>
    <select id="select1"  name="select" onChange="changeSel()">
                 <option value="1">1</option>
                 <option value="2">2</option>
                    </select>
    <input type="text" id="text" name="text" style="" value="" />
</body>
</html>

Code 2中的代码是否更加简洁,更重要的是它很好的实现了代码复用,以及未来的可维护性。建议大家编写代码的时候多从复用和可维护性上去考虑实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值