2012-06-06 34 views
2

一個人怎麼會堅持在這種情況下晾乾(手風琴的數量可能很大):怎麼幹的CoffeeScript

$ -> 
    $("#accordion-1").accordion 
    autoHeight: false 
    navigation: true 
$ -> 
    $("#accordion-2").accordion 
    autoHeight: false 
    navigation: true 

回答

5

看來你可以創建一個通過選擇產生另一個函數的函數:

create = (selector) -> 
    $ -> 
    $(selector).accordion 
     autoHeight: false 
     navigation: true 

則:

create "#accordion1" 
create "#accordion2" 
3

不知道的CoffeeScript,但在JS使用jQuery,你可以說像$("#accordion-1,#accordion-2").accordion(...)同時影響兩個元素。或者,您可以將一個類應用於HTML中的手風琴,然後像$(".accordion").accordion(...)那樣說。這在我看來是最不可能導致未來悲傷的方式;你需要一個手風琴,你只需要給它適當的課程。您從HTML中刪除它,它已經從要使用的元素列表中刪除,而無需編輯單獨的腳本。

+0

由於超,我給傑弗裏趙的答案是因爲他提供了一個在這種情況下重新考慮咖啡標記的例子。然而,你是對的,並且正確的是這是一種代碼味道 - 應該爲這種類型的情況引入類。 – Hedgehog

1

最簡單/最短的解決方案:

$ -> 
    $("#accordion-1, #accordion-2").accordion 
    autoHeight: no 
    navigation: yes 
+0

傑弗瑞趙的允許一個循環的列表,以防萬一有很多手風琴,而它不回答'如何重構咖啡腳本'cHao是正確的,應該使用一個類。在coffeescript這也是最簡單的。 – Hedgehog