Почему мой Javascript не работает при визуализации представления?

0

У меня есть Javascript, который uses on ready state в моем приложении Rails. Он должен реагировать на щелчок по ссылке, поэтому он

  <%= javascript_tag "$(document).ready(function(){$('#save').click(save);});"%>

но при визуализации представления, получая его из другого представления, он не работает. Он работает только, когда я использую f5 для перезагрузки сайта.

Вы знаете, почему это так?


РЕДАКТИРОВАТЬ:

Я добавил alert('it works'); к моему $(document).ready(function(){}; но он пока не работает. Таким образом, событие готовности документа не запускается.


@BroiSatse: Да, у меня установлены турболинки. Вот мои требуемые части из моего приложения.js:

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require turbolinks
//= require_tree .
  • 0
    $. ("document") должен быть $ (document) ??? и что это ?? $. ("ссылка" ();) ?? вы думаете, эта работа ???
  • 2
    Или даже $(document) .
Показать ещё 2 комментария

3 ответа

0

Попробуйте изменить это на

$(function(){ console.log("ready fired");$.("link"();));

проверить, не запущено ли событие готовности документа

Если это не так, вам нужно будет найти событие, которое активирует и связывает с ним функциональность.

0

Это похоже на типичную проблему, вызванную камнем turbolinks. Этот камень повышает производительность сайта, не загружая всю страницу для каждого запроса. Очевидная проблема заключается в том, что $(document).ready не запускается при загрузке новой страницы. Чтобы исправить это, вы можете изменить свой вызов на:

  <%= javascript_tag "$(document).on('page:load', function(){$('#save').click(save);});

Однако лучшим способом, с которым я jquery-turbolinks является установка jquery-turbolinks gem. Просто добавь

gem 'jquery-turbolinks'

в ваш gemfile, запустите bundle install и измените файл application.js, чтобы посмотреть sth как:

//= require jquery
//= require jquery.turbolinks
// ... 
//= require turbolinks
  • 0
    Я добавил jquery-turbolinks в свой gemfile, а также отредактировал мой application.js, но он загружается только при перезагрузке страницы.
  • 0
    Вы перезапустили сервер?
Показать ещё 6 комментариев
0

Если я пойму вашу проблему, достаточно ли чего-то подобного. Комментарий, если я не понимаю проблему.

$(document).ready(funtion(){

    $(document).on('click touchstart', '#save', function(){
        save();
    });

    function save(){
        console.log('This Works');
    }

});
  • 0
    Я не думаю, что вы меня правильно поняли. Сожалею. Там нет ничего плохого в моем документе готовы события. Проблема в том, что он не срабатывает при рендеринге страницы, а работает при перезагрузке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню