Fancybox不是一个功能

时间:2010-10-21 21:21:14

标签: javascript jquery html jquery-plugins fancybox

您好我正在使用jQuery插件fancybox显示bing地图,当有人将地址输入文本框并点击旁边的提交按钮时。并加载fancybox并显示该地址的地图。这适用于我的应用程序,但问题是,它只能在一个页面上工作,而另一个页面,当我加载它时,它给我一个错误,说fancybox不是一个函数。我在错误控制台和firebug控制台中看到了这个错误。我不确定会出现什么问题。相同的代码在另一个页面中工作,但它不在这个页面上吗?

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

我很确定这不是可重用性问题。但是当我测试是否已经加载了fancybox的原始文件时,它们会加载dom,所以它可能不是实际问题。但我无法理解问题还有什么。

这是我的代码

abbr:只是一个文本位。我根据用户选择的内容有不同的div。并且每个div都有自己的控件,这些控件将从该文本开始并附加自己的定义,例如mapresults,decValLat,decValLon等。

ex:abbr&gt;&gt; east 然后ids将是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 个答案:

答案 0 :(得分:57)

我已经有了这种类型的错误,因为我在插件导入后重新加载jQuery,检查你是不是错误地重新导入jquery(有时包含在像jQuery工具这样的包中)。

答案 1 :(得分:6)

我刚刚遇到这个问题,似乎某些版本的jQuery与FancyBox的版本不兼容,例如Fancybox 1.3.4对于1.7以下的jQuery版本是错误的,并且不适用于高于1.8的版本。

答案 2 :(得分:3)

您需要加载扩展名,例如easing.js和mousewheel.js BEFORE 主要的fancybox插件。这解决了这个问题。

答案 3 :(得分:2)

如果“fancybox”作为函数不存在,则可能是jQuery源或插件源无法加载到您的页面中。确保路径,文件名和扩展名都正确。

编辑:确保在链接到任何插件之前链接到jQuery Source。如果在jQuery之前将插件加载到HTML中,插件将失败。

答案 4 :(得分:1)

在我的例子中,它是jQuery.noConflict();在另一个jQuery插件中排...当我删除一切开始工作。

答案 5 :(得分:0)

如果您在头标记中使用包含JQuery的插件,则可能会出现此问题。 我最近在我的博客中添加了“TheThe Slider”,我的所有FancyBox都停止了工作。虽然这种情况很容易解决。基本上,转到插件目录,搜索对jquery的调用并使其使用条件。如果您希望看到我的实现,我使用screen-capture进行了blog about it

答案 6 :(得分:0)

我在我的WordPress网站上遇到了这个问题,我发现问题发生的原因是fancybox.js在我安装的两个插件的代码中出现了两次。因此,请检查您的代码,并确保从一个来源加载。

答案 7 :(得分:0)

可能的解决方案:

1)你已经加载了jQuery吗?如果没有,则在任何 $ 命令开始之前加载它。

2)检查,可能是你在页面中多次加载jquery库(.js)。尝试只加载一个。

3)在文件末尾,您可以执行此javascript命令:$ = jQuery.noConflict();,它可能会解决。如果没有,那么任何地方都使用 jQuery 而不是 $ 这个词,它也会起作用。