0

Если мой application.js выглядитRails файлов JavaScript документ, готовый, кажется, переписывая друг друга

//= require file1 
//= require file3 
//= require file3 
//= require file4 

и каждый из моих файлов # .js содержат

$(document).ready(function() { 
// set click events and other cool stuff 
} 

Похоже, что только file1 получает множество. Лучше ли иметь только 1 .js-файл, который вызывает готовность документа к набору других .js-файлов? Я не использую turbolinks или дерево, это часть проблемы?

+1

Там нет ничего плохого в этом. Вы можете использовать столько обратных вызовов '$ (document) .ready', сколько хотите, и они не будут переписывать друг друга. Вам нужно будет посмотреть, как ваши файлы включены и что-то отлаживать, мы не можем помочь с тем, что вы разместили здесь. – meagar

+1

Имейте в виду, что если у вас есть ошибка в одном из первых файлов javascript, остальные будут отображаться, но не будут работать. Осмотрите свою страницу и посмотрите, есть ли у вас какие-либо ошибки JS. – kobaltz

ответ

0

Решение, которое работает довольно хорошо, заключается в добавлении условной проверки после $ (document) .ready, чтобы проверить, назначен ли класс html для определенного javascript.

Это мой CoffeeScript пример:

ready =() -> 
    if $('body').hasClass 'landing' 
    .... 

$(document).ready(ready) 
$(document).on('page:load', ready) 
Смежные вопросы