Можно ли загрузить 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, которая не так уж тяжелая.

Другие вопросы по тегам