Можно ли загрузить Jquery в теле страницы?
Я использую воспламенитель кода, и некоторые из моих представлений требуют jquery. Поскольку они должны использоваться в нескольких местах, они должны вызывать jquery в своем файле, однако, поскольку они ссылаются на внешний файл, вызовы $(document.ready) оцениваются перед загрузкой jquery и, следовательно, дают сбой. Можно ли поместить jquery в тело и по-прежнему загружать его до оценки javascript. Или, альтернативно, это какой-то способ передать тот факт, что jquery требуется обратно через средство воспламенения кода в заголовки, которые были вызваны перед рассматриваемым файлом.
В представлении:
echo $this->import->js('jquery.js','jquery');
echo '<script type="text/javascript">
$(document).ready(function(){$(\'div#login.rounded\').corner();})
</script>';
Вы можете просмотреть страницу по адресу: http://formulator.codingproject.net/content/login/
ПРИМЕЧАНИЕ. Эта страница фактически находится на моем домашнем компьютере, поэтому ожидается, что recaptcha не удастся.
6 ответов
Я думаю, что ответ - да. Вы можете загрузить jQuery.js
в вашем body
, Но вы должны написать свои теги сценария только после jQuery.js
декларация, если нет, вы можете в конечном итоге с ошибками:)
PS: поправьте меня пожалуйста если я не прав:)
JQuery действительно должен вызываться в элементе head. Вот как бы вы сделали это условно (не проверено).
В вашем контроллере каждая функция, которая нуждается в jQuery, должна иметь:
$data['need_jquery'] = true;
$this->load->view('header');
В вашем заголовке:
<head>
<? if($need_jquery) { ?>
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" /></script>
<? } ?>
</head>
Похоже, вы используете PHP? Если это так, создайте статический метод, который возвращает эту строку, но только если он еще не был включен в этот запрос. Тогда вы можете убедиться, что он включается только один раз.
Может я ошибаюсь Но когда я просматриваю ваш исходный код и прослеживаю, где находится файл jquery: http://www.formulator.com/assets/scripts/jquery/jquery.js я получаю сообщение об ошибке "страница не найдена". Я предполагаю, что это может быть проблемой. Может быть, то, как выводит ваш php, не включает правильный домен / поддомен?
Мой сайт такой же. У меня есть один заголовок, который загружается на всех страницах. В этом заголовке я делаю if($this->uri->segment(2) == 'controller')
, Затем я загружаю jQuery и некоторые скрипты, если это необходимо для этого контроллера.
Я думаю, что будет хорошо, если jQuery будет включен в тег каждой страницы, кроме того, вы можете использовать уменьшенную версию jQuery, которая не так уж тяжелая.