【发布时间】:2011-05-23 02:51:53
【问题描述】:
我在尝试使用上图中的 $(document).ready() 时出错。 我应该如何解决这个问题?
编辑 23/05/2011 10:54
我有一个线索。 我正在工作的页面继承自母版页
在母版页中这段代码不起作用,可能是路径不同的问题
<head id="Head1" runat="server">
<title>Back Office</title>
<link href="~/Styles/MasterPage.css" rel="stylesheet" type="text/css" />
<link href="Styles/custom-theme/jquery-ui-1.8.12.custom.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="scripts/jquery-1.5.1.min.js"></script>
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
</head>
此代码似乎不起作用
在母版页的主体上,有一个脚本管理器和 jquery, 这使得 jQuery 可以工作,是因为我们在 body 中使用了 scriptmanager,所以 document.ready 不起作用?
<asp:ScriptManager ID="ScriptManager1" runat="server" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError">
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery-1.5.1.min.js" />
</Scripts>
</asp:ScriptManager>
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
我发现了问题。
问题是jquery代码在masterpage上,在脚本管理器中,而脚本管理器在body标签里面。
document.ready 位于母版页上继承的页面的标题标记上,因此在执行到正文的代码之前,jquery 尚未包含在内,这是错误的。
解决这个问题的最简单方法是,我必须将 javascript 代码移动到 body 标记的底部。 我仍然找不到的正确解决方法是将javascript包含代码放在标题中。但我还没有找到可行的方法。我的母版页和继承页位于不同的路径上。我发现了很多技术,但它们都不起作用。
【问题讨论】:
-
是的,你可以,这可能是 Visual Studio 的问题。
-
我认为该错误确实意味着您实际上没有包含 jquery 库(在上面的脚本中包含)。
-
其实我可以使用其他javascript函数函数作为标识符但是我不能使用$(document).ready
-
这没有任何意义。我认为您需要发布jsfiddle.net,以帮助展示哪些有效,哪些无效。
-
Visual Studio 可能是唯一的问题,它也无法理解 HTML5 标签和较新的 CSS3 属性并发出不必要的警告。但是我想知道为什么会发生这种情况,因为当您在 Visual Web Developer (2010) 中创建一个新的 Web 应用程序时,它会自动创建“脚本”文件夹并在其中添加 JQuery 库并将其包含在您创建的每个网页中,所以它应该理解你想做什么。
标签: javascript asp.net jquery document-ready