2013-06-24 1 views
0

Я использую CakePHP, и в шаблоне я нажал каждый тег скрипта прямо перед тегом закрывающего тега, чтобы получить быстрый pageload. Теперь в теле, перед тегами script, есть некоторый код, который опирается на jQuery (слайдер и диаграммы). Поэтому я использовал функцию document.ready для этого, но ничего не происходит. Что мне нужно сделать для создания рабочего скрипта?Как запустить Javascript в шаблоне, а все скрипты внизу?

Некоторый код для вас, чтобы получить представление:

Шаблон index.php

... html stuff ... 
... the following line fetches the content which contains jQuery functions ... 
<?php echo $this->fetch('content'); ?> 
... html stuff ... 
<?php 
    echo $this->Html->script('jquery'); 
    echo $this->Html->script('jquery-ui-1.9.1'); 
    echo $this->Html->script('rhinoslider-1.05'); 
    echo $this->fetch('script'); 
    echo $scripts_for_layout; 
    echo $this->Js->writeBuffer(); // Write cached scripts 
?> 
</body> 

В извлеченной содержание есть, например, функция слайдера:

$(document).ready(function() { 
    $('#slideshow').rhinoslider(); 
}); 

Мои подходы : Я тоже пробовал это с помощью window.onload, который тоже не работает. Из-за моего понимания функций document.ready- и onload я совершенно не знаю, почему он не работает. Я полагаюсь на вас, ребята :) Спасибо заранее.

+0

Похоже, вы пытаетесь запустить свой скрипт до того, как будут загружены необходимые сценарии. Что произойдет, если вы переместите 'fetch ('content')' после загрузки скриптов? –

+0

Вы получаете какую-либо ошибку на консоли? также вы проверяете, действительно ли загружается jquery? – jycr753

+0

спасибо, ребята, ответ был ниже. – Karl

ответ

0

Похоже на то, что вы пытаетесь использовать $(document).ready() до $. Вам нужно будет убедиться, что jQuery загружен, прежде чем звонить на $(). Попробуйте загрузить jQuery в <head>.

+0

Спасибо, это было :) Невнятная ошибка: D Хорошая практика использовать DOMCOntentLoaded вместо $ (document) .ready then? – Karl

+0

@ Karl Легкая ошибка сделать, сделал это сам несколько раз. '$ (document) .ready (function() {/ * code here * /});', вероятно, лучше всего. Пока вы загрузили jQuery, все в порядке. Стоит прочитать страницу jQuery в [событие .ready] (http://api.jquery.com/ready/). Рад помочь. –