我有反映的动作类别顶部的菜单项,这是可见的数据要么排序或过滤动作的菜单栏:jquery的:如何循环通过多个项目中选择
<ul class="menu-bar">
<li class="top-menu-item"><a class="clear-filter">Clear</a></li>
<li class="top-menu-item"><a><span class="category Category1">Category1</span></a>
<ul>
<li><a>FilterAction</a></li>
<li><a>SortAction</a></li>
</ul>
<li class="top-menu-item"><a><span class="category Category2">Category2</span></a>
...
</ul>
当用户选择一个排序或筛选操作,我有脚本编制,目前用相应范围内的文本替换动作名称,并在范围中添加适当的类以指定选择,以便如果在Category1
菜单中选择FilterAction
,跨度将显示像这样:
<span class="category Category1 set-filter">FilterAction</span>
,如果你选择了SortAction
相反,你将设置跨度
<span class="category Category1 set-sort">SortAction</span>
,如果你选择了两个:一个分拣动作
<span class="category Category1 set-filter set-sort">SortAction, FilterAction</span>
总是被列在最前面。
在任何时候只能有一个排序动作,但一次没有限制过滤器的数量。
要改变排序方式,因为一次只能有一个,这很容易 - 当我设置一个新的排序时,我检查看看现有的set-sort
类,删除set-sort
类,然后替换文本与保留为span
(上面的Category1
)的类的原始类别相符,或删除逗号(包含)之前的所有文本,以便只保留过滤器文本。这没有问题。
眼下去除过滤器的唯一方法是点击链接Clear
,应全部更换span
S作类或者与原来的类别名称或与现有的那种行动。
我一直有的麻烦是能够一次选择所有跨度为sort-filter
的跨度,然后循环以相应地更改文本和课程。我现在有CoffeeScript的代码,这是否:
$target = $(event.target) # this will be the clear button
$categorySpan = $target.parents(".menu-bar").eq(0).find(".set-filter")
<< code to perform actions on $categorySpan >>
现在这显然是行不通的,它只会通过每个跨度上执行所有选择的跨度毯子行动,而不是单独循环。我原本试图这样做:
for $categorySpan in $target.parents(".menu-bar").eq(0).find(".set-filter")
但后来我无法获得跨度的关键属性,如文本。
做这种循环操作的正确方法是什么?
这完全做到了。 – fox