2010-05-12 87 views
0

为什么我在Firebug中出现错误“u is undefined”?jquery错误“u is undefined”

我的页面包含一个显示照片和照片画廊的作为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的其他部分后仍然在Firebug中出现错误“u is undefined” PHP页面并尝试重新打开照片?

+0

你能提供一个网址到页面吗? – Nalum 2010-05-12 15:11:42

+0

我还没有完成这个页面,并没有URL :( – Sergio 2010-05-12 15:14:41

+0

如果你使用的是IE,切换到另一个浏览器,Chrome和Firefox都有优秀的开发工具,让你更容易调试Javascript错误。控制台会告诉你到底是什么行/脚本导致的错误,不像IE浏览器,它会告诉你天空的蓝色 – 2010-05-12 15:18:57

回答

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(); 
      }, 
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 require_onces像我可惜没,你可以结束一些非常时髦的Javascript引用。

+0

究竟是什么问题。谢谢彼得! – sqrl0 2010-08-27 14:50:57

+0

准确地说,我的问题也是如此。我在内联的弹出窗体中声明了它。 – NotMe 2010-09-27 19:43:45

1

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

0

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

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