【发布时间】:2014-11-17 03:57:49
【问题描述】:
所以我有数百个列表,它们被分为 30 多个类别。
我所做的是让列表显示:无,对于每个类别都有一个 click.slideToggle() 函数,并且除了单击的列表之外,还有 slideUp 其他列表,问题是我必须为每个类别编写重复性很长的代码列表。
我需要有人建议我编写这些 javascript 行的更好方法,所以这里是更清晰图片的代码。
<span id='categoryA'>
<div id='listA' class='list'>
<span id='categoryB'>
<div id='listB' class='list'>
<span id='categoryC'>
<div id='listC' class='list'>
<span id='categoryD'>
<div id='listD' class='list'>
<!-- there are around 25 more of similar lists -->
CSS:
.list {
display: none;
}
JavaScript:
$(document).ready(function() {
$("#categoryA").click(function() {
$("#listA").slideToggle(function() {
$("#listB,#listC,#listD").slideUp();
});
});
$("#categoryB").click(function() {
$("#listB").slideToggle(function() {
$("#listA,#listC,#listD").slideUp();
});
});
$("#categoryC").click(function() {
$("#listC").slideToggle(function() {
$("#listA,#listB,#listD").slideUp();
});
});
$("#categoryD").click(function() {
$("#listD").slideToggle(function() {
$("#listA,#listB,#listC").slideUp();
});
});
});
重点是我希望每次点击#categoryA 时,它会滑动切换#listA,如果我点击#categoryB,它会滑动切换#listB 和滑动当前滑动的任何其他列表。
我有 30 多个类别。如何使代码更简单、更高效?有没有人有更聪明的方法来做到这一点?
【问题讨论】:
-
使用类和单个事件处理程序,然后按 DOM 中的位置定位元素。
-
顺便说一句,已经有 jQuery 的 accordion 插件,甚至是来自他们的 jQueryUI 小部件集合的 official one 和大量的第三方插件。在推出自己的代码之前,您可能需要检查现有代码。
标签: javascript jquery