Ну, во-первых, я думаю, вы в конечном итоге переключитесь на camelCase ... Я знаю, что многие люди предпочитают readability_of_underscores, но каждая библиотека, с которой вы взаимодействуете (включая jQuery), использует camelCase.Просто кое-что, что нужно иметь в виду.
Если оставить в стороне, вопрос о необходимости охвата переменных с помощью = null
является хорошим.Я пытался убедить Джереми, что должен быть более приятный синтаксис, но он категорически против.Поэтому я бы предложил переместить переменную в свойство объекта.К счастью, это jQuery, поэтому есть много мест для хранения данных.Как насчет использования метода списка .data ?Это имеет дополнительное преимущество: если вы хотите сделать это в нескольких списках в будущем (с одним current_open_row
в каждом списке), вам не придется менять свой код на один бит.Просто добавьте больше списков с .faq-item
дочерними элементами в разметку.
Еще один незначительный момент: вы даете post
вызову обратный вызов
(data) -> replace_items data
Если это все, что вы делаете,почему бы просто не передать replace_items
напрямую?:)
Я бы также поместил каждый аргумент функции post
в свою строку для удобства чтения.Пары ключ-значение автоматически объединяются в один объект, даже без фигурных скобок.Вот как все это выглядит:
$('li.faq-item').live 'click', (event) ->
$row = $(this)
$list = $row.parent()
row_id = $row.attr 'id'
$.post(
"/faqs/update_rows",
old_row_id: $list.data('current_open_row'),
new_row_id: row_id,
replace_items,
'json'
)
$list.data 'current_open_row', row_id