当使用具有jQuery引用的母版页时,jQuery在内容页面中未定义

时间:2010-07-19 17:18:35

标签: asp.net jquery master-pages

我有一个嵌套的母版页。父母主页面,子母版页面和母版页是子母版页的内容页面。我在head部分的父母版页中引用了jQuery。<script type="text/javascript" src='<%#ResolveUrl("~/includes/jquery-1.4.2.min.js") %>' ></script>&amp; Page.Header.DataBind();在OnLoad事件中。

我在包括母版页在内的所有页面中使用jQuery。但是我在内容页面中收到“错误:$()。ready不是函数”。如果我在内容页面中包含jQuery引用它可以工作。

问题:如果对jQuery的引用在主页面部分中,为什么内容页面不能使用jQuery?当我查看源代码时,带有jQuery的脚本标记就在那里,它可以工作。

在母版页和内容页呈现过程中被合并,并发送到浏览器作为一个单一的HTML页面,所以我不知道什么时候使用母版页,jQuery的引用打破。

更新

当我改变“就绪$(函数()”到“jQuery的(文件)。就绪(函数($)”,它的工作!我不加载任何其他JavaScript库,我没有使用MS阿贾克斯。

2 个答案:

答案 0 :(得分:0)

首先,我之前没有注意到这一点,但是您对$.ready(function() {})的原始调用是无效的,但是jQuery(document).ready(function() {})确实有效吗?如果您使用$(document).ready(function () {} ),您的通话是否有效?只是想确保它不是一个错字。 jQuery文档说$.ready(function() {})是有效的,但不推荐使用。

好吧,假设它不是拼写错误,那听起来肯定与'$'变量存在冲突。如果您正在使用第三方控件或ASP.NET AJAX,则可能会遇到冲突(即使您可能未明确包含JS文件)。

如果您可以在页面加载后发布浏览器输出的内容,那将有所帮助。

此外,如果您运行Fiddler(或其他一些流量请求工具),您可以查看是否正在下载任何JS引用。不仅要查看.JS文件,还要查看.AXD文件(某些第三方工具将这些文件命名为ScriptResource.axd或WebResource.axd,它们可能会重新定义'$'变量)。

您可能想在jQuery API页面上查看有关noConflict函数的this link。当你与$ variable发生冲突时,这会有所帮助。

没有看到输出,很难诊断。但希望这会有所帮助。

答案 1 :(得分:0)

我也有同样的问题,听起来像是jQuery冲突 我解决了我的问题:

     <script type="text/javascript" >
        $(document).ready(function () {
            $.noConflict();
           
         });
</script>

<head>部分