Ошибка nggSlideshow is not a function

mstdmstd

Новичок
Всем привет,
Подскажите пожалуйста на сайте http://winevibe.com/ в JS консоли выскакивает ошибка
Код:
Метка времени: 06.12.2013 10:19:04
Ошибка: TypeError: jQuery(...).nggSlideshow is not a function
Источник: http://winevibe.com/
Строка: 907
И она указывает на строку кода


Код:
ngg-slideshow-26-2363-1
<p style="text-align: center;"><div id="ngg-slideshow-26-2363-1" class="ngg-slideshow" style="height:240px;width:320px;">
<div id="ngg-slideshow-26-2363-1-loader" class="ngg-slideshow-loader" style="height:240px;width:320px;">
<img src="http://winevibe.com/wp-content/plugins/nextgen-gallery/images/loader.gif" alt="" />
</div></div>
<script type="text/javascript" defer="defer">
jQuery(document).ready(function(){
  jQuery("#ngg-slideshow-26-2363-1").nggSlideshow( {id: 26,fx:"",width:320,height:240,domain: "http://winevibe.com/",timeout:0}); // ОШИБКА
});
При этом указанный div c id ngg-slideshow-26-2363-1 существует

Судя по ошибке неподключена эта самая либа nggSlideshow но поиском в заголовке находим
что подключен <script type='text/javascript' src='http://winevibe.com/wp-content/plugins/nextgen-gallery/js/ngg.slideshow.min.js?ver=1.06'></script>
кликом на этой ссылке открывается файл и firebug не показывает ошибок - то есть файл нормально поключен
Это сильно модифицированный wordpress -похоже что проблемы возникли после очередного апдейта

В чем может быть проблема ?
 

ksnk

прохожий
атрибут defer="defer" работает, imho только для внешних скриптов ( src="..."). Для встраиваемых - поведение неясно. Но видимо дело не в этом.
Первым делом можно вот это
PHP:
jQuery(document).ready(function(){
  jQuery(...
заменить на
PHP:
jQuery(function(){
  jQuery(...
document ready срабатывает сразу после окончания парсинга document'а и, вероятно, до подзагрузки некоторых внешних библиотек.
 

riff

Новичок
Похоже у тебя проблема с версиями (или копиями) jQuery. У тебя загружается ещё одна копия версии 1.3.2.
И в консоли активна версия 1.3.2. А твой slideshow прикрепляется к 1.7

1.3.2 загружают плагины jwf2 и winefactory. (итого сайт загружает 3 копии jQuery)
При этом загружается 1.7, затем слайдшоу, затем 1.3 из jwf2, она и "затирает" твоё шоу, затем контрольный в голову 1.3 из winefacrory, она затирает предыдущую из jwf2.
 
Последнее редактирование:

riff

Новичок
Вот блин, чего я сразу не заметил, а вместо этого в консоль полез. В коде страницы же чёрным по белому - три подряд jquery.
 

mstdmstd

Новичок
я нашел и закоментарил выводы jquery-1.3.2.min.js
и вылезла ошибка :
Код:
Метка времени: 06.12.2013 14:26:36
Ошибка: TypeError: $ is not a function
Источник: http://winevibe.com/
Строка: 667
и указывает на строку
Код:
<script type="text/javascript">
$(document).ready(function(){
При этом в заголовке по прежнему присутствует вызов
http://winevibe.com/wp-includes/js/jquery/jquery.js?ver=1.7.2

Это что разные форматы вызова jquery ? как с этим можно бороться?
 

riff

Новичок
какая-то сволочь затёрла $.
Посмотреть смогу чуть позже, часика через 1,5.
 

mstdmstd

Новичок
я затер :)
а точнеее заменилл на jQuery( - и ошибка исчезла
Спасибо я кажется разобрался - хотя и не очень понятно как там на одном вордпрессе уживались разные версии jquery...
 

vasinsky

Новичок
щас модули умные пишут - в админке у модуля - подключать или нет библию

мне вот на днях конфликт показывали - mootools + 2 jquery разных версий))
 

riff

Новичок
Что значит "заменил"? Если, на строке с ошибкой, $(...) ты просто заменил на jQuery(...), то это не то.
А вот если на странице не доступно $, то надо искать, кто её поделил на ноль.
 
Последнее редактирование:

riff

Новичок
Это да, но "мы" же привыкли писать $(...), а из-за того, что кто-то затёр $, ошибка вполне может всплыть снова.
 

riff

Новичок
У тебя в jquery.min, в конце файла, есть строка
jQuery.noConflict( )
Я не знаю должно ли так быть в библиотеках движка, который ты используешь, но в оригинальном jquery такой строки нет.
Именно она глушит $. http://jquery-docs.ru/core/jquery-noconflict/
Короче, если не нужна глобальная $, то оставь как есть.

-----------
К слову, заметил, что jquery-impromptu.2.7.min.js тоже дублируется.
 
Последнее редактирование:

hell0w0rd

Продвинутый новичок
Оборачивайте свой код вот так:
PHP:
(function($) {
  $('.btn').click(..);
})(jQuery);
и все будет ок
Плюс, если вы пишете плагин можно например написать так:
PHP:
(jQuery || Zepto);
 
Сверху