2010-05-12 52 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,並將其刪除。