Jquery错误“你是未定义的”

时间:2010-05-12 15:06:40

标签: php jquery

为什么我在Firebug中收到错误“你是未定义的”?

我的页面包含照片和照片库的显示,作为PHP代码中使用“break”划分的特殊单独部分。

使用“Fancybox.js”显示照片和照片库。

第一次尝试打开照片时,一切正常,但是当我刷新页面后再次执行此操作时,Firebug显示错误“u is undefined”。

我正在使用的菜单的Jquery显示页面的这些单独部分:

$(document).ready(function(){

$(".menu_rfr").bind('click', function() {
$("#main").html('<img src="img/spin.gif" class="spin">');
location.replace($(this).attr('rel'));

});

$(".menu_clickable").bind('click', function() {
$("#main").html('<img src="img/spin.gif" class="spin">');
$("#main").load($(this).attr('rel'), function(event) {

});        
$(".menu_clickable").unbind("click");

});

});

简化的PHP代码如下所示:

<?
if (!isset($a)) $a = '';
switch($a)
{
case 1:
default:
?>
<div class="menu_clickable prof_link" id="prof_info" rel="?a=2">Photos</div>
<div class="menu_clickable prof_link" id="prof_info" rel="?a=3">Gallery</div> 
<div id="main"></div>    
<?
break;//photos
case 2:
?>
<script type="text/javascript"> 

$("a.group").fancybox({
'titlePosition'     : 'over',
'overlayShow':false
 });
 </script>
 <?
 <a href="1.jpg" id="group" class="group"><img src="tmb/1.jpg" border="0"></a>
 <?
 break;
 case 3: // photo gallery 
 ?>
<script type="text/javascript"> 

$("a.groupg").fancybox({
'titlePosition'     : 'over',
'overlayShow':false
 });
 </script>
 <?
 <a href="2.jpg" id="groupg" class="groupg"><img src="tmb/2.jpg" border="0"></a>
 <?
 break;
 }
 ?>

正如我所说,这是一个简化的代码,可能还有一些错误。我只想表明我在哪里以及如何使用Fancybox。

页面顶部的菜单的jquery代码和fancybox之间是否存在冲突,或者还有一些其他原因导致我在打开其他部分后仍然在Firebug中出现错误“u is undefined” PHP页面并尝试重新打开照片?

4 个答案:

答案 0 :(得分:5)

查看您的HTML源代码并确保您没有声明两次FancyBox。我刚刚在firebug中弹出了完全相同的错误,这就是我在源代码中找到的内容:

<script language="javascript" type="text/javascript" src="./ext_scripts/jquery.fancybox-1.3.1/fancybox/jquery.fancybox-1.3.1.pack.js"></script>

<link rel="stylesheet" href="./ext_scripts/jquery.fancybox-1.3.1/fancybox/jquery.fancybox-1.3.1.css" type="text/css" media="screen" />  
<script language="javascript" type="text/javascript" src="./ext_scripts/jquery.fancybox-1.3.1/fancybox/jquery.fancybox-1.3.1.pack.js"></script>

不确定为什么会发生这种情况,但是如果你像我一样在你的PHP中嵌入你的include和require_onces,你可以得到一些非常时髦的Javascript引用。

答案 1 :(得分:1)

您可能包含两次fancybox.js脚本导致问题。请检查所有文件并删除不需要的文件。

答案 2 :(得分:0)

我也有同样的错误 - 我认为这是由于清理代码重置'加载'div。我有一个非常讨厌的修复:

变化:

if ($("#fancybox-wrap").length) {
   return;

收件人:(跳过多重初始化检查)

if (false && $("#fancybox-wrap").length) {

并添加:

$.apzFancyboxInit = fancybox_init;
在'fancybox_init = function(){'

之后

这样做可以让我们多次调用初始化程序;并将函数指针保存到全局变量中。我们现在要做的就是确保每次关闭fancybox时都调用$ .apzFancyboxInit函数。执行此操作的最佳位置是onClosed函数处理程序;所以(在我的情况下),我的电话看起来像这样:

        $.fancybox(
        {
            'showCloseButton' : true,
            'type' : 'ajax',
            'onClosed' : function()
            {
                $.apzFancyboxInit();
            },

答案 3 :(得分:0)

如果您使用的是“翻录”模板,您可能会发现在</body>标记正上方的html模板中写有fancybox生成的div。

如果您禁用了JavaScript,请检查您的html输出是否包含ID为fancybox-wrap的div,并将其删除。