jQuery не определен, и у Object [object Object] нет метода 'fancybox' в OSClass

Я использую OSClass. когда идти http://localhost/osclass/index.php?page=item&id=2 страница, которая дает следующую ОШИБКУ.

Uncaught ReferenceError: jQuery is not defined 
(anonymous function) 

Uncaught TypeError: Object [object Object] has no method 'fancybox' 
(anonymous function)
o 
p.fireWith 
e.extend.ready 
c.addEventListener.B 

Uncaught TypeError: Cannot call method 'create' of undefined
(anonymous function)

в этом файле мои JS,

osc_register_script('fancybox', osc_current_web_theme_js_url('fancybox/jquery.fancybox.js'));

osc_enqueue_script('fancybox');
osc_enqueue_script('jquery-validate');

osc_enqueue_style('fancybox', osc_current_web_theme_js_url('fancybox/jquery.fancybox.css'));

а также

    <script type="text/javascript">
        $(document).ready(function(){
            $("a[rel=image_group]").fancybox({
                openEffect : 'none',
                closeEffect : 'none',
                nextEffect : 'fade',
                prevEffect : 'fade',
                loop : false,
                helpers : {
                        title : {
                                type : 'inside'
                        }
                }
            });
        });
    </script>

Где моя проблема?

2 ответа

Решение

Я исправил это сегодня утром, вот коммит: https://github.com/osclass/Osclass/commit/cd9f75080f42d681be2e6bce709269073c0bcec2

Проблема состояла в том, что зависимости fancybox не были установлены

jQuery не загружается, когда скрипт, который выдает ошибку, пытается использовать его. Ошибки, которые следуют за первыми, происходят из-за того, что jQuery не определен.

JQuery должен быть загружен прежде всего, что может зависеть от него.

Так как вы используете эти функции для загрузки вещей, которые вам нужно разместить, перед любым другим javascript, который может нуждаться в jQuery:

osc_register_script('jquery', osc_assets_url('path/to/jquery.js'));
osc_enqueue_script('jquery');

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

<script type="text/javascript" src="<?php echo osc_current_web_theme_js_url('jquery.js') ; ?>"></script>
Другие вопросы по тегам