javascript - 根据数据深度切换选择
问题描述
<select id="advert_category" name="advert_category">
<option value="">All Items</option>
<option value="512">All Test 2</option>
<option value="52">Vehicles</option>
<option value="64" data-depth="1"> Cars For Sale</option>
<option value="65" data-depth="1"> Cars For Rent</option>
<option value="66" data-depth="1"> All Vehicle Spare Parts</option>
<option value="67" data-depth="1"> Number</option>
</select>
在文档加载时,一旦用户按下父类别,所有子类别都应该被隐藏,它应该切换相关的子类别。
我怎样才能使用 jquery 做到这一点?
解决方案
您可以为此使用类(甚至HTML data-* Attributes)并在单击父项时提取它们,然后调整它以显示子类别。
例如,当您单击 Vehicles 时,class="Vehicles"
它将Vehicles
从变量中获取classes
。然后你找到所有的类Vehicles-option
并用它做一些事情。
find("."+classes+"-option")
$( "#advert_category > option" ).click(function() {
var classes=$(this).attr("class");
console.log(classes);
$("#advert_category").find("."+classes+"-option").toggle();
});
.Vehicles-option, .colors-option {
display: none}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="advert_category" name="advert_category">
<option value="">All Items</option>
<option value="512">All Test 2</option>
<option value="52" class="Vehicles">Vehicles</option>
<option value="64" data-depth="1" class="Vehicles-option" hidden> Cars For Sale</option>
<option value="65" data-depth="1" class="Vehicles-option" > Cars For Rent</option>
<option value="66" data-depth="1" class="Vehicles-option" hidden> All Vehicle Spare Parts</option>
<option value="67" data-depth="1" class="Vehicles-option" > Number</option>
<option value="52" class="colors">Colors</option>
<option value="64" data-depth="1" class="colors-option" > Red</option>
<option value="65" data-depth="1" class="colors-option" > Blue</option>
</select>
Aldo 我不得不说这似乎是糟糕的设计,因为用户必须再次单击才能显示这些子类别,但这就是您想要的。也许更喜欢实现悬停,看看蜂箱是如何形成的。请参阅HTML optgroup 标签。
顺便说一句,您不能只在单击后保持选择项打开,所以您的切换不会像我认为的那样工作:
推荐阅读
- javascript - 如何让表单提交事件监听器在 js 中工作?
- r - 如何将一列中的月份和年份分隔为R中的两列
- python - python中的饼图
- javascript - Puppeteer:登录对话框上的访问字段
- python - PhotoImage 没有这样的文件或目录
- android - Flutter 应用程序返回“在 null 上调用了 getter 'length'”
- javascript - 如何在按钮单击事件中获取图像?
- hadoop - Hadoop 3.2.1 localhost:错误:您必须是特权用户才能运行安全服务
- wpf - How to disable WPF Expander Control isPressed/onMouseClick event?
- sql - 在sql数据库中存储double数组