2011-11-23 49 views
1

我正在构建一个网站,并且一直在使用一些似乎无法工作的jQuery脚本。但一段时间后,我发现我必须链接到我的内容文件中的jQuery库。在单独的php头文件中包含jQuery不知何故失败

我的层次结构如下:

  • 的header.php(公共头HTML)
  • 链路/ index.php的(其中, “链接” 是在域任何子文件夹,即:接触/索引。 PHP,家庭/ index.php文件等)
  • footer.php

所有这些内容文件的使用 “require_once(” header.php文件 “),” 和相同的页脚,模板技术。

尽管在浏览器中查看源代码可以轻松链接到包含的脚本和CSS文件,但它似乎会加载jQuery(仅)。但是当我将它包含在特定的内容文件中时,我编写的脚本就起作用了。

下面是一些相关的代码:

中的header.php

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="NO"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 

<!--[if IE]> 
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 
<script type="text/javascript" src="../js/jquery-latest.pack.js"></script> 
<script type="text/javascript" src="../js/shl_menu.js"></script> 
<script type="text/javascript" src="../js/prototype.js"></script> 
<script type="text/javascript" src="../js/scriptaculous.js?load=effects,builder"></script> 
<script type="text/javascript" src="../js/lightbox.js"></script> 

在画廊/ index.php文件(内容文件)

<?php require_once("../header.php"); ?> 

<!-- Sub Menu List --> 
<nav id="shl-submenu" class="left shadow-box rounded-corners"> 

<script type="text/javascript"> 
$(document).ready(function(e) 
{ 
    $("#shl-submenu ul li a").click(function(e) { 
     alert("Click"); 
    }); 
}); 
... 

现在,如果我在该脚本上面包含<script type="text/javascript" src="../js/jquery-latest.pack.js"></script>,它可以工作,但是除非。

任何帮助将不胜感激! 谢谢。

+0

所以页面呈现的时候,做浏览器加载jQuery的latest.pack.js或者它说404? – djdy

+0

不知道你的目录结构是如何布局的,这可能是因为相对URL没有指向正确的位置。 – jprofitt

+0

就是这样。它应该加载,因为当我点击脚本href(在谷歌浏览器的“查看页面源代码”)它正确​​链接,我也下载了lib,并在本地链接以确保。除非我单独将它包含在内容文件中(它使用与header.php中相同的链接),否则不起作用 –

回答

2

正如你猜测的那样,jQuery和Prototype之间存在冲突。两者都将$定义为一个函数。您可以随时使用变量jQuery而不是$来避免这种情况,并在jQuery之后声明原型。这篇文章解释来处理这一个好办法:

How to avoid conflict between JQuery and Prototype

+0

好吧,这就是冲突是什么:)感谢您澄清! –