Запуск JavaScript в Rails
Я думаю, это действительно просто, но я не могу заставить его работать. У меня есть скрипт в моем help.js в app/assets/javascript.
Это загружается, и если я добавляю alert(), он запускается, но когда я пытаюсь вызвать javascript (jquery click()), ничего не происходит. Если у меня есть javascript-код на странице, он работает, если внизу страницы.
Я предполагаю, что включения из ресурсов помещаются в начало страницы, и тогда мой сценарий не будет работать. Так...
- Я совершенно бесполезен в написании javascripts?
- Должен ли javascript быть размещен в конце, и как это будет сделано, если он требуется от ресурсов без перемещения полного javascript_include_tag? (Я думаю, что я мог бы исключить его из приложений и загрузить его отдельно, но это не так).
- Это очень странно, что это не должно работать, так где я ошибся?
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 ответа
Решение
События в 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();
});
});
});
Я думаю, что ваш код правильный. Я проверил это на http://jsfiddle.net/Dd46n/ Я думаю, что help.js загружается перед файлом библиотеки jQuery.