jquery - 根据下拉选择值显示/隐藏元素
问题描述
我有一个用于为首页内容选择过滤器的下拉菜单。我想要它,以便如果所选值是“顶部”,则在其旁边会出现第二个下拉列表以及时间范围。我有他们两个的 HTML 和 CSS,但不能让 JQuery 工作。
我试图用 JQuery 做的事情如下:
if (.order value == "top") {
change .order-time to .order-time-display;
}
.order-container {
margin: 0 auto;
width: 75%;
margin-bottom: -10px;
}
.order-text {
display: inline-block;
}
.order-menu {
margin-left: 10px;
display: inline-block;
}
.order-container select {
padding: 14px 16px;
font-size: 14px;
}
.order-container p {
font-weight: bold;
}
.order-container option {
font-size: 14px;
}
.order-time {
display: none;
}
.order-time-display {
display: inline-block;
}
<div class="order-container">
<div class="order-text">
<p>Order:</p>
</div>
<div class="order-menu">
<select name="order" class="order">
<option value="hot" selected> Hot </option>
<option value="recent"> Recent </option>
<option value="top"> Top </option>
</select>
</div>
<select name="order-time" class="order-time">
<option value="24h" selected> 24h </option>
<option value="week"> Week </option>
<option value="month"> Mont </option>
<option value="year"> Year </option>
<option value="all"> All </option>
</select>
</div>
解决方案
在元素上使用change
事件。.order
$(function() {
$(".order").on("change", function() {
if (this.value === "top") {
$(".order-time").addClass("order-time-display")
} else {
$(".order-time").removeClass("order-time-display")
}
})
})
.order-container {
margin: 0 auto;
width: 75%;
margin-bottom: -10px;
}
.order-text {
display: inline-block;
}
.order-menu {
margin-left: 10px;
display: inline-block;
}
.order-container select {
padding: 14px 16px;
font-size: 14px;
}
.order-container p {
font-weight: bold;
}
.order-container option {
font-size: 14px;
}
.order-time {
display: none;
}
.order-time-display {
display: inline-block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="order-container">
<div class="order-text">
<p>Order:</p>
</div>
<div class="order-menu">
<select name="order" class="order">
<option value="hot" selected> Hot </option>
<option value="recent"> Recent </option>
<option value="top"> Top </option>
</select>
</div>
<select name="order-time" class="order-time">
<option value="24h" selected> 24h </option>
<option value="week"> Week </option>
<option value="month"> Mont </option>
<option value="year"> Year </option>
<option value="all"> All </option>
</select>
</div>
推荐阅读
- ruby-on-rails - 在 Rails 中使用强参数动态生成方法
- visual-studio-2017 - Visual Studio 2017(任何版本)不再能够在 Windows 10 上安装或更新
- c# - 如何在 c# 中使用 iText 7 将 SVG 图形添加到 pdf 文档?
- c - 计算整个字符串,包括 C 中的空格
- templates - 我们可以限制 Sitecore 项目只有一个页眉和页脚渲染吗?
- java - 如何使用文件输入和输出流从文件中添加和获取特定数量的字节?
- matlab - matlab中如何正确测量一段代码的执行时间?
- c++ - GMP:将整数转换为 std::string
- java - 排序顺序断言失败
- c# - 导出到 CSV 时,从 StringBuilder 对象中删除最后一个(空)条目