CoffeeScript - привязка событий кликов к динамически загружаемым объектам с включенным JQuery - PullRequest
20 голосов
/ 16 января 2012

Работаю над переписыванием внешнего вида моего сайта в Coffeescript. Я понимаю, как связать функцию щелчка с классом.

$('.song').click ->
    //code

Однако у меня возникают проблемы с динамически загружаемым контентом. Я знаю, что в JQuery решением этой проблемы было бы использование функции «Вкл» следующим образом:

$(document).on('click', '.song', function(){
    //code
});

Но я не уверен, как это переводится на coffeescript. У меня сложилось впечатление, что стрелка ракеты -> переводится в анонимную функцию в javascript, но как это работает, если функция является одним из параметров? Я опробовал довольно много разных синтаксисов, и, похоже, ни один из них не работает, спасибо!

Ответы [ 3 ]

21 голосов
/ 16 января 2012

Обычно в CoffeeScript скобки не используются, если порядок выполнения без них ясен. Так что это можно записать так:

$(document).on 'click', '.song', ->
    ### code ###

Но, конечно, всегда используйте скобки, когда порядок выполнения неочевиден.

15 голосов
/ 16 января 2012
$(document).on('click', '.song', ( ->
    ### code ###
));

Переводит на этот JavaScript:

$(document).on('click', '.song', (function() {
  /* code */
}));

Обратите внимание, что вы можете использовать оператор => вместо ->;использование двойной стрелки также связывает this с обработчиком событий (эквивалент использования jQuery's bind ).

4 голосов
/ 16 января 2012

JS2Coffee может помочь с вопросами такого типа:

http://js2coffee.org/

Вам нужно быть немного осторожнее с js2coffee, так как он иногда натыкается на довольно сложный код JS, но это удивительноточный, и обычно он, по крайней мере, приблизит вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...