使用 jquery 隐藏带有类的所有元素
Hide all the elements with a class using jquery
我是javascript的新手,真的很喜欢它,但我现在面临着一个让我有点困惑的问题。
我写了下面的代码来隐藏带有类male
的所有元素,但它不起作用。当我用id
替换类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"
那么它应该可以工作。
这是因为元素具有双class
属性,这意味着只有前class
才会生效,并且导致没有具有类.male
的元素
您可以使用同一 class
属性中的空格列出多个类:
<div class="form-row male">
优化的JS代码
您可以使用.toggle(true/false)
来判断元素是否必须隐藏或显示。
我还建议为 .male
添加 css:.male {display: none;}
以防止在 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
在同一元素上多次声明。
为单个元素多次声明相同的属性(无效 HTML),将允许第一个值覆盖同一属性的所有后续值。
因此,在这种情况下,您的元素只需要有一个class
属性
此处解释了此行为 属性-名称-状态
<div class="form-row male">
吉斯菲德尔
相关文章:
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- 为什么不是't my元素:使用变量而不是字符串时包含(变量)功?jquery
- 如果同一页面上有多个元素使用相同的ID,jQuery将计算价格
- 不能对包含同一类的所有元素使用.replacement()
- 在对同一元素使用.addClass()后修改.haverage()
- 如果有许多元素使用相同的类,我如何使用JavaScript获取特定的元素
- 对动态元素使用.on()和e.stopPropagation()
- 如何获取元素:使用javascript和CORS悬停背景
- FireFox-在全局作用域中由id名称引用的元素.使用w3c标准
- 如何为每个带有数字的id元素使用Javascript函数
- 如何在iOS中对输入元素使用Jquery:焦点选择器
- 下拉框及其元素使用包含警报框的按钮
- 元素使用引导和砌体在页面上移动
- 仅通过前 5 个元素使用 jQuery .each 重复
- 对新的 DOM 元素使用相同的函数
- 对子元素使用 insertAfter
- 如何从待办事项列表中清除元素(使用用户添加的元素)
- 使用 “each” 元素使用 JQuery 筛选表
- 对元素使用重复的类名
- 在页面加载时显示元素-使用当前URL