jQuery не определен?

#jquery

#jquery

Вопрос:

У меня есть следующий код в теле моей страницы. (Я знаю, что было бы лучше загрузить в заголовок, но у меня нет доступа к заголовку.)

 <script src="javascript/jquery-1.5.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery.noConflict();
jQuery(document).ready(function(){
  alert('hello world');
});
</script>
  

Firebug показывает, что jquery-1.5.2.min.js загружается нормально, и это было wget сделано прямо со страницы загрузки jQuery, так что проблем с содержимым возникнуть не должно. Однако скрипт продолжает работать jQuery.noConflict() с:

 Error: jQuery is not defined
  

Я пытался переместить эту строку внутрь (document).ready , но это не помогает. Итак, как я могу проверить, что jQuery загрузился, не обращаясь к jQuery? 🙂

Мне нужно использовать jQuery в режиме без конфликтов, поскольку на той же странице есть скриптовые скрипты.

Спасибо!

Комментарии:

1. Вы проверили содержимое jquery-1.5.2.min.js файл?

Ответ №1:

Не видя полной страницы, сложно ответить на этот вопрос. Однако мое лучшее предположение заключается в том, что да, ваши библиотеки jQuery (в конечном итоге) загружаются, следующий бит скрипта, который запускает и получает доступ к объекту jQuery, делает это до того, как скрипты jQuery будут готовы. В качестве быстрого подтверждения концепции можете ли вы попробовать этот простой (но очень грязный взлом), чтобы увидеть, на правильном ли я пути?

 <script src="javascript/jquery-1.5.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
setTimeout(function(){alert(jQuery);},1000);
</script>
  

Комментарии:

1. Это приводит к той же ошибке… Я сдался и поместил его в head (чего я надеялся избежать), в любом случае спасибо!

2. Ах, не беспокойтесь. Я бы увеличил время ожидания, скажем, до 4000, чтобы посмотреть, что произойдет!

3. Хорошо, все еще возникают проблемы даже в голове. Я увеличил время до 4000 и вижу предупреждение, показывающее следующее: function (a, b) { return new d.fn.init(a, b, g); } . Также теперь я получаю кучу новых ошибок скрипта prototype / scriptaculous, которых раньше не было, я думаю, потому что я не вызывал noConflict.

4. В качестве другого теста не могли бы вы изменить свой код, чтобы НЕ включать библиотеку jQuery, а затем иметь простое оповещение (jQuery) в конце? Было бы интересно посмотреть, получите ли вы что-нибудь предупреждающее. Это означало бы, что что-то где-то определяет переменную «jQuery»!

5. Я поместил <script> после всего остального в head, включая CSS. Казалось, это решило проблему… не уверен, почему, но в любом случае приму этот ответ! Спасибо!

Ответ №2:

Вы должны использовать $.noConflict() . Убедитесь, что вы импортируете скрипт jquery после scriptaculous, и вызываете noConflict перед выполнением каких-либо вызовов scriptaculous.

http://api.jquery.com/jQuery.noConflict/

Комментарии:

1. Нет, jQuery.noConflict() должно работать нормально. $ это просто псевдоним для jQuery .