[英]Hide all the elements with a class using jquery
我是Java的新手,很喜欢它,但现在遇到的问题令我有些困惑。
我在下面编写了代码,以使用male
类隐藏所有元素,但是它不起作用。 当我用一个id
代替class male
,代码开始工作。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <form class="form-register" method="post" action=""> <div class="form-title-row"> <h1>Create an account</h1> </div> <div class="form-row"> <label> <span>Gender</span> <select name="register_as" id="dropdown"> <option value="none">Select One</option> <option value="male">Male</option> <option value="female">Female</option> </select> </label> </div> <div class="form-row" class="male"> <label> <span>First Name</span> <input type="text" name="firstname"> </label> </div> <div class="form-row" class="male"> <label> <span>Last Name</span> <input type="text" name="lastname"> </label> </div> <div class="form-row"> <label> <span>Email</span> <input type="email" name="email"> </label> </div> <div class="form-row"> <button type="submit">Register</button> </div> <script> $(document).ready(function(){ $(".male").hide(); $("#dropdown").change(function(){ if ($("#dropdown").val() == "male") { $(".male").show(); } else { $(".male").hide(); } }); }); </script> </form>
我真的不知道如何解决这个问题。 请帮助我。
您的html中不能有两个class
属性,设置多个class
是在同一属性上,每个class
之间都有一个空格。
像这样更改代码:
class="form-row male"
然后它应该工作。
这是因为您具有元素的double class
属性,这意味着只有第一class
才会生效并且不会导致任何带有class .male
元素。
您可以使用同一class
属性内的空格列出多个类:
<div class="form-row male">
优化的JS代码
您可以使用.toggle(true/false)
判断元素是否必须隐藏或显示。
另外,我建议为.male
: .male {display: none;}
添加css,以防止在JS仍在处理时显示元素。
$(document).ready(function(){
$(".male").hide();
$("#dropdown").change(function(){
$(".male").toggle($("#dropdown").val() == "male");
});
});
尝试更改为此:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <form class="form-register" method="post" action=""> <div class="form-title-row"> <h1>Create an account</h1> </div> <div class="form-row"> <label> <span>Gender</span> <select name="register_as" id="dropdown"> <option value="none">Select One</option> <option value="male">Male</option> <option value="female">Female</option> </select> </label> </div> <div class="form-row male"> <label> <span>First Name</span> <input type="text" name="firstname"> </label> </div> <div class="form-row male"> <label> <span>Last Name</span> <input type="text" name="lastname"> </label> </div> <div class="form-row"> <label> <span>Email</span> <input type="email" name="email"> </label> </div> <div class="form-row"> <button type="submit">Register</button> </div> <script> $(document).ready(function(){ $(".male").hide(); $("#dropdown").change(function(){ if ($("#dropdown").val() == "male") { $(".male").show(); } else { $(".male").hide(); } }); }); </script> </form>
我所做的是将以下内容更改为: <div class="form-row" class="male">
更改为此<div class="form-row male">
class =“ form-row” class =“ male”
应该替换为
class =“ form-row male”
原因是您拥有在同一元素上多次声明class
相同属性。
为单个元素多次声明同一属性(无效的HTML),将使第一个值覆盖同一属性的所有后续值。
因此,在这种情况下,您的元素只需具有一个class
属性
此行为在此处解释Attribute-name-state
<div class="form-row male">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.