我有反映的動作類別頂部的菜單項,這是可見的數據要麼排序或過濾動作的菜單欄: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