我想顯示一個使用jQuery的頁面。頁面中實現的AJAX功能不起作用。jQuery沒有定義(在[Symfony]模板環境中)
我正在使用FF進行調試。當我查看控制檯面板時,我看到以下錯誤:'jQuery未定義'。嗯,我認爲這很容易 - 也許jQuery文件沒有被正確包含,或者沒有找到。所以我看看HTML並點擊節點 - 你會發現,jQuery腳本一直是正確的包含在頁面中。
儘管在引用jQuery的頁面中沒有其他js庫使用'$'(如原型),但我在jQuery邏輯中調用了noConflict()方法,以防萬一我使用衝突庫後期。
[編輯]
我認爲(精確的Symfony 1.4)問題是有關,我在一個模板環境使用jQuery的文件。對於那些不熟悉Symfony模板系統的人來說,視圖模型實際上是由一個'layout'文件(模板)組成的,然後使用其他位信息進行修飾(修飾器模式)(可以稱之爲'頁面內容' )。
最後一頁看起來大致是這樣的:
<html>
<head>
<script type="text/javascript" src= "http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>
</head>
<body>
<!-- page contents go here -->
</body>
</html>
我加載的jQuery到模板(即Symfony的術語中的「佈局」)。
這樣做的原因是JQ庫是緩存的客戶端,並且可用於需要它的頁面。 dynnamic頁面(其內容進入佈局的「頁面內容」部分)將擁有自己的jQuery邏輯。這(使用由以下馬克Schultheiss答案提供的「包裝函數」的想法),看起來是這樣的:
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function()
{
jQuery.noConflict();
jQuery(document).ready(function(){
jQuery("div.tpaccordion div.accItem").hide();
jQuery("#latestVideosHolder").show();
jQuery("div.tpaccordion h3").click(function(){
jQuery(this).next().slideToggle("slow")
.siblings("div.accItem:visible").slideUp("slow");
jQuery(this).toggleClass("active");
jQuery(this).siblings("h3").removeClass("active");
});
});
});
/*]]>*/
</script>
** [EDIT2] **修正語法錯誤。現在我又回到了jQuery未定義的錯誤。 :(
看起來你複製了Mark Schultheiss給出的代碼中的語法錯誤 - 更改最後一個)}; into}); – 2010-01-19 16:42:11
由於您使用Firefox,因此可能需要使用HttpFox插件檢查加載順序。至少,當我看到類似的問題時,這幫助了我。除此之外,我們可能需要看到更多的代碼。 – 2010-01-19 17:17:46
剛剛下載HttpFox - 發現了,它與FF 3.5.7不兼容:( 有趣的是,雖然它聲稱與(Firefox:1.5 - 3.5。*)一起使用 – 2010-01-19 22:21:03