【问题标题】:Including jquery in a separate php header file somehow fails在单独的 php 头文件中包含 jquery 以某种方式失败
【发布时间】:2012-01-05 00:36:37
【问题描述】:

我正在建立一个网站,并且一直在使用一些似乎不起作用的 jQuery 脚本。但过了一段时间,我发现我必须在我的内容文件中链接到 jQuery 库。

我的层次如下:

  • header.php(普通头文件html)
  • link/index.php(其中“link”是域上的任何子文件夹,即:contact/index.php、home/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");
    });
});
 ...

现在,如果我在该脚本上方包含 &lt;script type="text/javascript" src="../js/jquery-latest.pack.js"&gt;&lt;/script&gt;,它会起作用,但除非。

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

【问题讨论】:

  • 那么当页面渲染时,浏览器是加载jquery-latest.pack.js还是说404?
  • 不知道你的目录结构是如何布局的,可能是因为相对 URL 没有指向正确的位置。
  • 就是这样。它应该被加载,因为当我点击脚本href(在谷歌浏览器的“查看页面源代码”中)它正确链接并且我还下载了lib,并在本地链接以确保。除非我将它单独包含在内容文件中(它使用与 header.php 中相同的链接),否则不起作用
  • 我刚刚删除了prototype.js 脚本标签。那解决了它。但是,为什么它们会发生冲突?
  • 我还不能回答我自己的问题,但似乎必须在prototype.js之后包含jQuery。

标签: php javascript jquery html


【解决方案1】:

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

How to avoid conflict between JQuery and Prototype

【讨论】:

  • 好的,这就是冲突所在 :) 感谢您的澄清!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 2019-08-04
  • 2011-01-22
  • 2019-09-29
  • 2020-02-22
  • 2013-05-20
  • 2020-07-31
相关资源
最近更新 更多