jQuery没有定义(在[Symfony]模板环境中)

Sti*_*MAN 3 jquery symfony1

我试图显示一个使用jQuery的页面.页面中实现的AJAX功能不起作用.

我正在使用FF进行调试.当我查看控制台面板时,我看到以下错误:'jQuery未定义'.啊,我觉得这很简单 - 也许jQuery文件没有被正确包含,或者找不到等等所以我看看HTML并点击节点 - 瞧,jQuery脚本已经正确地包含在这页纸.

虽然引用jQuery的页面中没有其他js库使用'$'(如原型),但我在jQuery逻辑中调用了noConflict()方法,以防万一我在以后使用冲突库.

[编辑]

我认为问题与我在模板环境中使用jQuery的文件有关(准确地说是Symfony 1.4).对于那些不熟悉Symfony模板系统的人来说,视图模型本质上是一个"布局"文件(模板),然后用其他信息来装饰(装饰模式)(让我们称之为'页面内容' ).

最后一页看起来大致如下:

<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>
Run Code Online (Sandbox Code Playgroud)

我正在将jQuery加载到模板中(即Symfony术语中的'layout').

这样做的原因是JQ库是高速缓存的客户端,并且可用于需要它的页面.动态页面(其内容进入布局的"页面内容"部分)将具有自己的jQuery逻辑.这(使用下面Mark 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>
Run Code Online (Sandbox Code Playgroud)

**[Edit2]**更正了语法错误.现在我回来让jQuery没有定义错误.:(

Mar*_*iss 8

它在加载脚本/ DOM之前运行.把jQuery.noconflict(); 在jquery包装器中

jQuery(function()
{
  jQuery.noConflict(); 
});
Run Code Online (Sandbox Code Playgroud)

如果你认为你可能需要保护自己:

  (function($)
    {
      $.noConflict(); 
    })(jQuery);
Run Code Online (Sandbox Code Playgroud)

也有效

编辑:修正了一些语法错误