2016-08-01 3 views
0

У меня есть jquery в $(document).ready(), но этот код jquery не запускается на моей странице, если я не обновляю страницу. Затем он работает при каждом последующем обновлении. Почему это так?javascript не загружается, если я не обновляю

Я просто помещаю теги javascript и html, но я работаю в приложении rails, не уверен, что это усложняет ситуацию.

+4

Поделитесь соответствующими битами кода, пожалуйста? – Timo

+0

Вы используете 'turbolinks'? –

+0

Да, я. Вот почему? – nachime

ответ

1

В зависимости от версии turbolinks вам необходимо использовать правильный синтаксис для переопределения события загрузки документа. Для turbolinks 5:

вместо

$(document). ready(function() { 
.... 
}) 

Использование

var documentready = function(){ 

} 
$(document). on('turbolinks:load', documentready); 

Это грациозно вернется к документу готовое событие при обновлении.

Зачем это необходимо?

Turbolinks связывает изменения местоположения (например, ссылки на ссылки) и использует Ajax для загрузки частичного. Документ НЕ ЗАГРУЖЕН. Кроме того, он управляет историей браузера для записи посещения.

Таким образом, активы не загружаются при каждом посещении. Быстро. Поэтому готовый документ не будет привязываться ко всем событиям, если только все слушатели не нацелены под телом или документом (например, $("body").on("click","selector",function()... вместо $("selector").on('click', function()...

+0

вы можете объяснить почему? Я новичок в этом! – nachime

+0

На самом деле я просто попробовал это, эта же проблема сохраняется. – nachime

+0

извините, он предназначен для загрузки, а не для посещения. проверить обновленную версию –

0

Эта проблема возникает из-за того, что некоторые ключевые события в старой версии турбовинтовых устройств несовместимы с новые turbolinks 5.

Я предложил скачать gem jquery-turbolinks убедитесь, что требуется, чтобы application.js

//= require jquery 
//= require jquery.turbolinks 
...... 

и сценарий совместимости .Вы можете найти сценарий here просто создать compatibility.coffee недеформированной r assets/javascripts

Это позволит использовать старый синтаксис. $(document).ready...

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