我试图显示一个使用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没有定义错误.:(
它在加载脚本/ DOM之前运行.把jQuery.noconflict(); 在jquery包装器中
jQuery(function()
{
jQuery.noConflict();
});
Run Code Online (Sandbox Code Playgroud)
如果你认为你可能需要保护自己:
(function($)
{
$.noConflict();
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
也有效
编辑:修正了一些语法错误
| 归档时间: |
|
| 查看次数: |
5320 次 |
| 最近记录: |