Как я могу определить обработчики событий внутри цикла, используя переменную цикла?

#javascript #coffeescript

#javascript #coffeescript

Вопрос:

 for a in [1,2,3]
  $('body').click (x) =>
    alert a
  

Он предупреждает 3 три раза, когда я нажимаю на тело. Я бы хотел, чтобы он предупреждал 1, 2 и 3.

Комментарии:

1. Я хотел бы щелкнуть тело один раз, и появятся три предупреждения: первое с 1, второе с 2, третье с 3.

Ответ №1:

Я испортил синтаксис в первый раз, но на этот раз все получилось правильно:

Вам нужно создать замыкание вокруг функции и немедленно вызвать ее (как и в Javascript). Coffeescript даже дает вам хороший синтаксис, чтобы сделать это за вас … ключевое слово do:

 for a in [1,2,3]
  do (a) ->
    $('body').click (x) =>
      alert a
  

Комментарии:

1. 1. Подробнее о том, как это работает, см. В моей статье PragPub » Вмешательство в CoffeeScript «.