Запуск JavaScript в Rails - PullRequest
       6

Запуск JavaScript в Rails

1 голос
/ 23 февраля 2012

Я думаю, это действительно просто, но я не могу заставить его работать.У меня есть скрипт в файле help.js в app / assets / javascript.

Он загружается, и если я добавляю alert (), он запускается, но когда я пытаюсь вызвать javascript (jquery click ()) Ничего не произошло.Если у меня есть javascript-код на странице, он работает, если внизу страницы.

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

  1. Разве я абсолютно бесполезен при написании javascript-кодов?
  2. Должен ли javascript быть помещен в конец, и как это будет сделано, если он требуется из ресурсов без перемещениязавершить javascript_include_tag?(Полагаю, я мог бы исключить его из приложений и загрузить отдельно, но это кажется неправильным).
  3. Мне кажется очень странным, что это не должно работать, так где я ошибся?

help.js

$('.clickme').click(function() {
  $('#working').show();
  var htmlStr = this.getAttribute('data-message');
  $('#helper_box').html(htmlStr);
  $('#helper_box').toggle('slow', function() {
    // Animation complete.
    $('#working').hide();
  });
});

index.html.erb

<div class="clickme" data-message="Something...">
  <%= image_tag("question_mark.png", :alt => "helper") %><br>
</div>

Ответы [ 2 ]

5 голосов
/ 23 февраля 2012

События в jQuery должны быть добавлены после полной загрузки документа.Вы пробовали использовать

$(document).ready(function() {
  $('.clickme').click(function() {
    $('#working').show();
    var htmlStr = this.getAttribute('data-message');
    $('#helper_box').html(htmlStr);
    $('#helper_box').toggle('slow', function() {
     // Animation complete.
     $('#working').hide();
    });
  });
});
5 голосов
/ 23 февраля 2012

Я думаю, что ваш код правильный. Я проверил это на http://jsfiddle.net/Dd46n/ Я думаю, что help.js загружается перед файлом библиотеки jQuery.

...