2016-07-19 2 views
0

У меня возникли проблемы с использованием JQuery на rails.In мои comments.js файл я добавитьJquery не работает на Rails

//= require jquery 
//= require jquery_ujs 
//= require cocoon 
//= require bootstrap-sprockets 
//= require turbolinks 
//= require_tree . 

$(document).ready(function() { 
    alert("This javascripts thing is reals making me mad!"); 
}); 
$(document).ready(function(){ 
    $("#comments_link").click(function(){ 
     $(".comments-section").toggle(); 
    });        
}) 

В моей application.html.haml я есть;

= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true 
    = javascript_include_tag 'application', 'data-turbolinks-track' => true 
    = csrf_meta_tags 

!!!!!!!!!!!!!!!!! UPDATE !!!!!!!!!!!!!!!!!!! Это удалось решить путем добавления preventDefault.Final версии ниже:

$(document).ready(function(){ 
$(".harun").click(function(e){ 
    e.preventDefault(); 
    $("section").toggle(); 
});        

})

+0

не следует использовать '$ (документ) .На ("готов" ....' это осуждается http://api.jquery.com/ready/ Сомнение что. разрешит ошибку, но попробуйте переместить код внутри этого сразу после 'alert()' и удалив его – charlietfl

+0

. Я попробовал обычный $ (document) .ready. Он тоже не работает. Я должен изменить его до нормального. для показа его. –

+0

Синтаксически корректный код jQuery. Сгенерированный источник выглядит как в браузере. – charlietfl

ответ

0

Это то же самая основная проблема у вас над вашим другим вопросом: Can't select link_to tag as jquery selector Rails

Вы используете turbolinks который не запускает событие $(document).ready при переходе страницы. Копирование из turbolinks документы: Running JavaScript When a Page Loads

You may be used to installing JavaScript behavior in response to the window.onload , DOMContentLoaded , or jQuery ready events. With Turbolinks, these events will fire only in response to the initial page load—not after any subsequent page changes.

In many cases, you can simply adjust your code to listen for the turbolinks:load event, which fires once on the initial page load and again after every Turbolinks visit.

document.addEventListener("turbolinks:load", function() { 
    // ... 
}) 
Смежные вопросы