Заставить jQuery .on () работать с Rails 3 - PullRequest
0 голосов
/ 05 марта 2012

Я создаю приложение на Rails 3 и пытаюсь заставить работать функцию jQuery .on ().В настоящее время он ничего не делает.

В assets / javascripts / v-application.js:

console.log('application');

$('body').on('click', function(){
  alert('test');
});

Когда приложение загружается, консоль отображает «приложение» (как и должно быть), нокогда я нажимаю на тело, оповещение не срабатывает.Если я вставлю тот же самый javascript в консоль и нажму на тело, появится соответствующее предупреждение.

Если я просматриваю v-application.js в браузере, он показывает функцию.

Я использую последние версии jquery-rails (2.0.1) и rails (3.2.2).Это все в среде разработки.

Что происходит, что Rails не знает, как обрабатывать вызов этой базовой функции?Это имеет отношение к конвейеру активов?Как я могу заставить это работать?

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

Я собираюсь догадаться, что у вас нет готовой функции.

$(function() {
  $('body').on('click', function(){
    alert('test');
  });
});

Если вы вставите код непосредственно в основной файл JS, выполнение $('body') ничего не найдет, поскольку при интерпретации тега script тег body еще не обработан. Придерживаясь логики внутри готовой функции, вы будете ожидать разбора всего документа.

0 голосов
/ 05 марта 2012

Вы используете jQuery 1.7.1?Вот тогда-то и возникла проблема.

jsFiddle здесь: http://jsfiddle.net/LmC6x/

Как сказал @loganfsmyth, я бы порекомендовал использовать функцию ready.

...