jQuery $ (document) .ready не является функцией - Rails 3.1 - PullRequest
1 голос
/ 04 октября 2011

Я относительно новичок в rails и недавно обновил свое приложение rails 3.0 до rails 3.1.Кажется, все работает нормально, но когда я начал кодировать некоторые jquery в своем приложении, я не могу вызвать большинство методов jquery.Например, у меня есть div:

<div id="myDiv">
  here is some content here
</div>

Когда я звоню:

$(document).ready(function() {
  $("#myDiv").hide();
})

Мой браузер выдает ошибку

$(document).ready is not a function @ http://localhost:3000/assets/application.js?body=1:11

Что-то заметить, когда янапишите js без $ (document) .ready () под div, как это

<div id="myDiv">
    here is some content
</div>
<script type="text/javascript" charset="utf-8">
    $("#myDiv").hide();
</script>

мой браузер выдает ошибку

$("#myDiv") is null @ http://localhost:3000/:57

Вот интересная часть.Когда я удаляю # и пишу это как

$("myDiv").hide();

Это работает !!Нет ошибокЗачем?Я не знаю.Но когда я изменяю его на $ ("myDiv"). AddClass ("anotherClass");или что-нибудь необычное, я получаю ошибку снова

$("myDiv").addClass is not a function @ http://localhost:3000/:57

У меня нет других ошибок JavaScript.Есть идеи, почему это происходит?Как я могу это исправить?

У меня уже есть gem 'jquery-rails', добавленный в мой файл gem.

Вот мой файл application.js

// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

// This is a manifest file that'll be compiled into including all the files listed below.
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically
// be included in the compiled file accessible from http://example.com/assets/application.js
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file. // require_tree 
//
//= require jquery
//= require jquery_ujs
//= require prototype
//= require bootstrap-alerts-1.3.0
//= require bootstrap-dropdown-1.3.0
//= require bootstrap-modal-1.3.0
//= require bootstrap-twipsy-1.3.0
//= require bootstrap-popover-1.3.0
//= require bootstrap-scrollspy-1.3.0
//= require bootstrap-tabs-1.3.0

$(document).ready(function() {
  $("#myDiv").hide();
})

Я попытался удалить всезагрузочные js-файлы, кстати, никак не повлияли.Он явно загружает jQuery.

Есть какие-нибудь подсказки о том, как заставить jQuery работать нормально?

1 Ответ

7 голосов
/ 04 октября 2011

Если вы намеренно используете и jquery, и прототип, вам не нужно конфликтовать с одним из них; вы загружаете прототип после jQuery, поэтому переопределяете функцию $.

...