#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.
Комментарии:
1. Нет,
jQuery.noConflict()
должно работать нормально.$
это просто псевдоним дляjQuery
.