2012-02-23 2 views
1

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

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

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

  1. Я совершенно бесполезен при написании javascripts?
  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> 
+0

любые ошибки на консоли firebug/js после нажатия? Я предполагаю, что вы не включаете jquery в файл application.js или не требуете библиотеки jquery после файла help.js. Вставьте содержимое файла application.js –

+0

Друг, которому вы должны убедиться, что ваш скрипт должен быть выполнен после того, как DOM готов. Так что @Gonzalo Quero - это корр. –

ответ

5

События в 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(); 
    }); 
    }); 
}); 
+0

Сладкий. Это сделал трюк. Поскольку я думал, что это было что-то легкое, так как почти все, когда вы сейчас это делаете. Спасибо Гонсало. – abegbg

+0

Нет проблем. Рад помочь вам! –

5

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

+0

Yupp. Это была проблема. Спасибо за головы. – abegbg

Смежные вопросы