繁体   English   中英

根据下拉选择隐藏或显示div

[英]Hide or show div based on dropdown selection

这是我的代码,用于基于下拉选择显示或隐藏div 它可以正常工作,但是div.red有问题。 如您所见,该div也包含一个下拉列表,当我在该下拉列表中选择一个选项时,它将使整个红色div框消失。 我不知道该怎么办。 请帮帮我,谢谢

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery Show Hide Using Select Box</title> <style type="text/css"> .box{ padding: 20px; display: none; margin-top: 20px; border: 1px solid #000; } .red{ background: #ff0000; } .green{ background: #00ff00; } .blue{ background: #0000ff; } </style> <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("select").change(function(){ $(this).find("option:selected").each(function(){ if($(this).attr("value")=="red"){ $(".box").not(".red").hide(); $(".red").show(); } else if($(this).attr("value")=="green"){ $(".box").not(".green").hide(); $(".green").show(); } else if($(this).attr("value")=="blue"){ $(".box").not(".blue").hide(); $(".blue").show(); } else{ $(".box").hide(); } }); }).change(); }); </script> </head> <body> <div> <select> <option>Choose Color</option> <option value="red">Red</option> <option value="green">Green</option> <option value="blue">Blue</option> </select> </div> <div class="red box"> <p> <select> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select></p> First name: <input type="text" name="fname"><br> Last name: <input type="text" name="lname"><br> </div> <div class="green box">You have selected <strong>green option</strong> so i am here</div> <div class="blue box">You have selected <strong>blue option</strong> so i am here</div> </body> </html> 

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery Show Hide Using Select Box</title> <style type="text/css"> .box{ padding: 20px; display: none; margin-top: 20px; border: 1px solid #000; } .red{ background: #ff0000; } .green{ background: #00ff00; } .blue{ background: #0000ff; } </style> <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#first").change(function(){ $(this).find("option:selected").each(function(){ if($(this).attr("value")=="red"){ $(".box").not(".red").hide(); $(".red").show(); } else if($(this).attr("value")=="green"){ $(".box").not(".green").hide(); $(".green").show(); } else if($(this).attr("value")=="blue"){ $(".box").not(".blue").hide(); $(".blue").show(); } else{ $(".box").hide(); } }); }).change(); }); </script> </head> <body> <div> <select id="first"> <option>Choose Color</option> <option value="red">Red</option> <option value="green">Green</option> <option value="blue">Blue</option> </select> </div> <div class="red box"> <p> <select id="second"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select></p> First name: <input type="text" name="fname"><br> Last name: <input type="text" name="lname"><br> </div> <div class="green box">You have selected <strong>green option</strong> so i am here</div> <div class="blue box">You have selected <strong>blue option</strong> so i am here</div> </body> </html> 

您的代码在两个选择上都运行脚本,并使其具有唯一性(带有ID)以分别选择它们。

当您使用Element Selector('element')时 ,事件处理程序随每个select元素一起附加。

相反,您可以使用ID Selector来指定颜色选择器选择元素的ID和绑定事件处理程序。 因此,事件处理程序将仅附加所需的元素。

选择具有给定id属性的单个元素。

的HTML

<select id="colorChooser">
    <option>Choose Color</option>
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option value="blue">Blue</option>
</select>

脚本

$("#colorChooser").change(function() {
});

另请注意,要获取选择元素的选定值,可以使用val() 无需将.each():selected选择器一起使用。

 $(document).ready(function() { $("#colorChooser").change(function() { if ($(this).val() !== "") { var selector = "." + $(this).val(); $('.box').not(selector).hide(); $(selector).show(); } else { $(".box").hide(); } }).change(); }); 
 .box { padding: 20px; display: none; margin-top: 20px; border: 1px solid #000; } .red { background: #ff0000; } .green { background: #00ff00; } .blue { background: #0000ff; } 
 <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script> <div> <select id="colorChooser"> <option>Choose Color</option> <option value="red">Red</option> <option value="green">Green</option> <option value="blue">Blue</option> </select> </div> <div class="red box"> <p> <select> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="mercedes">Mercedes</option> <option value="audi">Audi</option> </select> </p> First name: <input type="text" name="fname"> <br>Last name: <input type="text" name="lname"> <br> </div> <div class="green box">You have selected <strong>green option</strong> so i am here</div> <div class="blue box">You have selected <strong>blue option</strong> so i am here</div> 

将ID设置为第一个下拉列表,并根据ID选择器执行更改事件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery Show Hide Using Select Box</title>
<style type="text/css">
    .box{
        padding: 20px;
        display: none;
        margin-top: 20px;
        border: 1px solid #000;
    }
    .red{ background: #ff0000; }
    .green{ background: #00ff00; }
    .blue{ background: #0000ff; }
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $("#ddColor").change(function () {
        $(this).find("option:selected").each(function(){
            if($(this).attr("value")=="red"){
                $(".box").not(".red").hide();
                $(".red").show();
            }
            else if($(this).attr("value")=="green"){
                $(".box").not(".green").hide();
                $(".green").show();
            }
            else if($(this).attr("value")=="blue"){
                $(".box").not(".blue").hide();
                $(".blue").show();
            }
            else{
                $(".box").hide();
            }
        });
    }).change();
});
</script>
</head>
<body>
    <div>
        <select id="ddColor">
            <option>Choose Color</option>
            <option value="red">Red</option>
            <option value="green">Green</option>
            <option value="blue">Blue</option>
        </select>
    </div>
    <div class="red box">
<p> <select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select></p>
    First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br>
    </div>
    <div class="green box">You have selected <strong>green option</strong> so i am here</div>
    <div class="blue box">You have selected <strong>blue option</strong> so i am here</div>
</body>
</html>

同样,您可以将ID用于其更改事件的第二选择。

希望这可以对您有所帮助:-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM