2016-04-10 4 views
0

Я так смущен ... Я работал над своим сайтом и добавил jQuery. После тестирования я обнаружил, что jQuery ничего не сделал. Я тогда пробовал самый простой, но видимый код, который я мог придумать:

<script type="text/javascript"> 
    $("html").click(function() { 
    $("html").html(""); 
    }); 
</script> 

но это тоже ничего не делало. Так что я попробовал тот же код в консоли Js и вернулся эта ошибка:

Uncaught TypeError: $ is not a function 
    at <anonymous>:2:1 
    at Object.InjectedScript._evaluateOn (<anonymous>:848:140) 
    at Object.InjectedScript._evaluateAndWrap (<anonymous>:891:34) 
    at Object.InjectedScript.evaluate (<anonymous>:627:21) 

и просто входя $ просто возвращает «неопределенный».

Я исследовал и обнаружил, что я случайно переместил свой файл Gemfile и, возможно, серверу не удалось получить доступ к драгоценному камню jquery-rails. Но после того, как я переместил его и перезапустил сервер, проблема не исчезла.

Тогда я подумал, может быть, на моей странице был ошибочный код, который мешал запуску jQuery. Я удалил весь код, чтобы он был просто пустым документом, запустил его и снова попытался, но у меня были те же ошибки в консоли.

head моего приложения включает в себя следующее:

<head> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
</head> 

My app/assets/javascripts/application.js включает линии //= require jquery

И bundle install возвращает "JQuery-рельсы 4.1.1".

Я уже много раз запускал jQuery на одной странице без проблем. Кажется, мой сервер вдруг просто перестает понимать jQuery. Что может произойти?

+0

Что код в вопросе? Вы, кажется, включили все остальное, так что вы могли бы также сделать весь shebang. – MarsAtomic

+0

Если вы используете весну, иногда она поддерживает ваш сервер. Попробуйте «bin/spring stop», а затем перезагрузите сервер. –

+0

@PetrGazarov Я бегу весной, но, к сожалению, я попробовал то, что вы сказали, и ничего не изменилось. –

ответ

6

заверните в функции JQuery, как это:

// Note the "$" inside function() - that's the key 
jQuery(document).ready(function($) { 

    $("html").click(function() { 
    $("html").html(""); 
    }); 

}); 
+0

Хм ... да, теперь это работает. Что случилось? Мой другой jQuery не работал, как день назад. –

+1

Это проблема гонки. Вы вызывали '$', прежде чем он был загружен страницей. В приведенном выше примере код внутри функции тела выполняется только после завершения загрузки страницы. –

0

Убедитесь, что Вы JQuery в app/assets/application.js:

//= require jquery 
//= require jquery_ujs 
+0

О да, это включено. –

+0

И вы видите содержимое тега на своей странице при просмотре страницы в процессе разработки? Любые ошибки в консоли? –

+0

Что это значит? Если я посмотрю исходный код моей страницы, я должен ожидать, что где-то на нем появится «// = require jquery»? –