我不知道如何准确/智能地描述这一点,因为这似乎是完全不可能的,但肯定有一些原因。
如果我包括我的 <script/>
我的 <head/>
底部的标签element 我在尝试调用 .slider() 扩展来配置我的 slider 时遇到错误。但是如果我把 <script/>
在我的 <body/>
关闭之前的标签元素然后一切正常。为了说明,以下将不起作用(显然是下面的一些伪代码):
<head>
<script jquery.js/>
<script jquery-ui.js/>
</head>
<body>
... html ...
<script type="text/javascript">
$(document).ready(function () {
$(".slider").slider( { .. options .. } );
} )
</script>
... more html *including* the .slider elements
</body>
但是,如果我将两个 jQuery 脚本标签移动到 </body>
的正上方关闭元素工作。当脚本标记位于 head 元素中并且我调试我的应用程序时,基本上页面 确实 似乎已完全加载并且 Visual Studio 突出显示调用 .slider() 函数的行说它不知道什么 slider() 是。查看调用堆栈,它似乎从文档就绪函数中正确地调用了它...所有标记似乎都在那里,让我相信文档确实已准备就绪。
现在我没有在伪代码中包含 asp.net 1.1/2.0 站点所需的内容,即 <form/>
带有 runat="server' 的元素和 <asp:ScriptManager/>
标签的使用(我们需要它来解析来自不同文化的货币值(value),利用 Microsoft Ajax)。我不敢相信他们会导致问题,但也许他们是。另外, asp.net 注入(inject)了几个它自己的脚本部分(即用于验证、回发等)
关于表单标签...所有 html 和 document.ready 标记都在表单标签内部,而脚本标签总是在表单标签之外(在它上面,在头部或在它下面在 body 底部)。
显然我可以将脚本标记留在底部,我很可能最终会这样做,但我正在尝试获得一个干净的“模板站点”以在创建新的客户站点时使用它,但感觉不对我有一个限制,迫使我将这些标签放在 html 的底部。我确信我们的框架代码(或者可能是 asp.net 的)只是插入了一些导致问题/与 jQuery 冲突的东西,但我真的不知道如何去调试/诊断那个问题是什么。因此,如果有人有任何建议,我将不胜感激。
最佳答案
看起来 jQuery 1.3.2 正在由 ASP.NET 加载(请参阅您的第二个 WebResource.axd)。这两个库版本正在相互覆盖。因此,当您在页面末尾加载 1.6.2 时它起作用的原因。
关于javascript - asp.net 2.0 站点和 <script/> 标记的位置导致问题/冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7200872/