У меня есть 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 .
Попробуйте изменить это на
$(function(){ console.log("ready fired");$.("link"();));
проверить, не запущено ли событие готовности документа
Если это не так, вам нужно будет найти событие, которое активирует и связывает с ним функциональность.
Это похоже на типичную проблему, вызванную камнем 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
Если я пойму вашу проблему, достаточно ли чего-то подобного. Комментарий, если я не понимаю проблему.
$(document).ready(funtion(){
$(document).on('click touchstart', '#save', function(){
save();
});
function save(){
console.log('This Works');
}
});
$(document)
.