Fancybox это не функция - PullRequest
       9

Fancybox это не функция

25 голосов
/ 22 октября 2010

Здравствуйте. Я использую фантазию с плагином jQuery для отображения карт bing, когда кто-то вводит адрес в текстовое поле и нажимает кнопку «Отправить» рядом с ним. И загружается fancybox, и отображается карта для этого адреса. Это хорошо работает с моим приложением, но проблема в том, что он хорошо работает только на одной странице, а на другой, когда я загружаю его, он выдает ошибку, в которой говорится, что fancybox не является функцией. Я вижу эту ошибку в консоли ошибок и в консоли Firebug. Я не уверен, в чем может быть проблема. Тот же код работает на другой странице, но не на этой?

$("<a href=\"#showmap\">Map</a>").fancybox is not a function

Я почти уверен, что это не проблема повторного использования. Но когда я проверяю, загружены ли исходные файлы fancybox, они загружаются вместе с dom, поэтому это может не быть реальной проблемой. Но я не могу понять, в чем еще может быть проблема.

Это мой код

abbr: просто текстовый бит. У меня есть разные div в зависимости от того, что выбирает пользователь. И каждый div будет иметь свои собственные элементы управления, которые будут начинаться с этого текста и дополняться их собственными определениями, такими как mapresults, decValLat, decValLon и т. Д.

напр .: аббр >> восток и тогда идентификаторы будут eastmapresults, eastdecValLat, eastdecValLon и т. д.

function showMapFancybox(abbr){
    var abbr;
    $('#'+abbr+'mapresults').hide(); 
    $('<a href="#showmap">Map</a>').fancybox({
        overlayShow: true,
        onClosed: function() {
            $('#'+abbr+'mapresults').show();
            map_latdec = $('#decValLat').attr('value');
            map_longdec = $('#decValLon').attr('value');
            map_latdeg = $('#degValLat').attr('value');
            map_longdeg = $('#degValLon').attr('value');

            $('#'+abbr+'decValLatsub').val(map_latdec);
            $('#'+abbr+'decValLonsub').val(map_longdec);
            $('#'+abbr+'degValLatsub').val(map_latdeg+'N');
            $('#'+abbr+'degValLonsub').val(map_longdeg+'W');
        }
    }).click();    
};

Ответы [ 8 ]

60 голосов
/ 22 октября 2010

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

7 голосов
/ 20 декабря 2013

У меня только что была эта проблема, кажется, что некоторые версии jQuery несовместимы с версиями FancyBox, например, Fancybox 1.3.4 глючит с версиями jQuery ниже 1.7 и не работает на версии выше 1.8.

3 голосов
/ 24 февраля 2012

Вам необходимо загрузить такие расширения, как easing.js и mousewheel.js ДО основной плагин fancybox.Это решает проблему.

2 голосов
/ 22 октября 2010

Если «fancybox» как функция не существует, вполне вероятно, что либо источник jQuery, либо источник плагина не загружаются на вашу страницу. Убедитесь, что путь, имена файлов и расширение указаны правильно.

РЕДАКТИРОВАТЬ: Убедитесь, что вы ссылаетесь на jQuery Source, прежде чем ссылаться на какие-либо плагины. Если плагин загружается в ваш HTML раньше, чем jQuery, плагин завершается ошибкой.

1 голос
/ 28 сентября 2013

В моем случае это был jQuery.noConflict (); строка в другом плагине jQuery ... когда я удалил все начало работать.

0 голосов
/ 05 октября 2015

Возможные решения:

1) вы уже загрузили jQuery? Если нет, то загрузите его до запуска любых команд $ .

2) Проверьте, возможно, вы загружаете библиотеку jquery (.js) несколько раз на странице. Попробуйте загрузить только один.

3) В конце файла вы можете выполнить эту команду javascript: $ = jQuery.noConflict();, и она может решить. Если нет, то где-нибудь используйте слово jQuery вместо $ , и оно тоже будет работать.

0 голосов
/ 18 марта 2014

Я получил эту проблему на своем веб-сайте WordPress и обнаружил, что проблема возникает из-за того, что fancybox.js дважды представляет в коде два установленных мной плагина.Поэтому проверьте ваш код и убедитесь, что вы загружаете его из одного источника.

0 голосов
/ 03 января 2013

Если вы используете плагин, который включает JQuery в тег заголовка, эта проблема может возникнуть.Недавно я добавил «The Slider» в свой блог, все мои FancyBox перестали работать.Однако есть несколько простых решений для этой ситуации.в основном, перейдите в каталог плагинов, найдите вызов jquery и сделайте его использование условным.Если вы хотите увидеть мою реализацию этого, я сделал блог об этом со снимком экрана.

...