CoffeeScript - привязка Переключает события на динамически загруженные объекты с помощью JQuery On
Работа над переписыванием интерфейса моего сайта в Coffeescript. Я понимаю, как связать функцию щелчка с классом.
$('.song').click ->
//code
Однако я сталкиваюсь с некоторыми проблемами с динамически загружаемым контентом. Я знаю, что в JQuery решение этой задачи заключается в использовании функции "On" следующим образом:
$(document).on('click', '.song', function(){
//code
});
Но я не уверен, как это переводится в coffeescript. У меня создается впечатление, что стрелка ракеты → преобразуется в анонимную функцию в javascript, но как это работает, если функция является одним из параметров? Я пробовал довольно много разных синтаксисов, и никто из них не работает, спасибо!
Ответы
Ответ 1
$(document).on('click', '.song', ( ->
### code ###
));
Переводит на этот JavaScript:
$(document).on('click', '.song', (function() {
/* code */
}));
Обратите внимание, что вы можете использовать оператор =>
вместо ->
; использование двойной стрелки также связывает this
с обработчиком события (эквивалент использования jQuery bind).
Ответ 2
Обычно в CoffeeScript не используются скобки, если их порядок выполнения невозможен. Поэтому это можно записать так:
$(document).on 'click', '.song', ->
### code ###
Но, конечно, используйте скобки всегда, когда порядок выполнения не очевиден.
Ответ 3
JS2Coffee может помочь с этими типами вопросов:
http://js2coffee.org/
Вам нужно быть немного осторожным с js2coffee, так как иногда он натыкается на довольно сложный JS-код, но он на удивление точным, и обычно он по крайней мере приближается к вам.