可以在coffeescript中循环每个?

Tyl*_*ler 13 jquery loops coffeescript

我正在尝试以编程方式创建一些javascript按钮来切换页面上的可见性(用于snappy标记过滤).这适用于一个标签:

trigger = ".sales-focus-btn"
target = ".sales-focus"

jQuery ->   
  $(trigger).toggle ->
    $("#primary-content").find('.container').hide()
    $("#primary-content").find(target).show()
  , ->
    $("#primary-content").find('.container').show()
Run Code Online (Sandbox Code Playgroud)

是否有可能在coffeescript中做类似的事情,但是使用数组,例如

trigger = [
  ".sales-focus-btn"
  ".service-focus-btn"
  ".other-focus-btn"
  ...
]
target = [
  ...
]
Run Code Online (Sandbox Code Playgroud)

是否可以循环并为每种类型的标签创建一个切换?

UPDATE

是的,这是可能的.使用表格:

myFunction = (el) -> console.log el
myFunction elem for elem in array
Run Code Online (Sandbox Code Playgroud)

Ric*_*asi 24

当然有可能:

content = $('#primary-content')
container = content.find('.container')

tags = [
    '.sales-focus'
    '.service-focus'
    '.other-focus'
]

$.each tags, (tag) ->
    target = content.find(tag)
    $(tag + "-btn").toggle ->
        container.hide()
        target.show()
    , ->
        container.show()
Run Code Online (Sandbox Code Playgroud)

记得缓存DOM元素.或者使用for tag in tags而不是jQuery.each tags, (tag) -> ...:

for tag in tags
    do ->
      target = content.find(tag)
      $(tag + "-btn").toggle ->
        container.hide()
        target.show()
      , ->
        container.show()
Run Code Online (Sandbox Code Playgroud)

(正如@epidemian指出的那样,do ->IIFE必须保持每个target范围)