2012-06-06 2 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

Благодаря Chao, Я дал ответ Джеффери Чжао, потому что в этом случае он служит примером повторного факторинга coffeescript. Однако вы правы, и правильно, что это запах кода - нужно вводить классы для такого типа ситуации. – Hedgehog

1

Самый простой/кратчайшее решение:

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

Jeffery Zhao's позволит перебирать список в случае, если есть много аккордеона, в то время как он не отвечает на «как рефакторинг в coffeescript» cHao является правильным, следует использовать класс. В coffeescript это тоже самое простое. – Hedgehog

Смежные вопросы