应该将带有jquery代码的脚本块放在哪里放在ASP.NET MVC母版页上?

开始使用jquery并且无法获得asp.net mvc的hello world类型示例。 尝试使用此脚本加载页面时,我收到运行时错误“对象预期”。

A.脚本标记应放在母版页中的哪个位置? B.我可能做错了什么? 我的页面中肯定有“a”元素?

   $(document).ready(function() { $("a").click(function(event) { alert("Thanks for visiting!"); }); });  

B)我在快速测试页面检查了你的内联脚本,它运行正常,所以我建议使用安装了FireBug插件的Firefox来查找问题:

  • 在Firebug的“脚本”选项卡中,使用右侧的“监视”窗口插入并检查脚本的某些部分,并查看它们返回的内容。
  • 我首先将$放入监视窗口并检查它是否被识别为function() :也许jQuery没有属性链接
  • 然后将$("a")放入监视窗口并检查它返回的集合是否具有与集合中“a”选择器对应的正确数量的项目
  • 继续运行脚本部分,直到遇到错误

嗯……

回答你的第一个问题:它们应该放在元素中。

此外,通常我在DOM中下沉事件时使用’bind’方法 (就像你想要做的那样)。

所以,代码看起来像:

 $(document).ready(function() { // Bind each link to a handler: $("a").bind('click dblclick', function(event) { alert('click'); }) }); 

还有一些设计技巧(因为你正在处理我心中的事情(使用jQuery的ASP.NET MVC):

在母版页的元素的底部添加额外的“ContentPlaceHolder”。 这将允许您在其正确的位置运行页面特定的javascript:在页面的“head”部分,它将允许您制作特定于页面的javascript包含。

它看起来像这样:

    

为什么这有用? 我会告诉你:你正在使用的jQuery圆角插件可能只用在几个页面上 – 为什么要在每个页面上包含它?

我同意Dan添加用于链接脚本的内容占位符。 但是,头部通常不是将JavaScript放在性能方面的最佳位置。 最好的地方是在页面的底部。 因此,您的HTML可以在JavaScript之前加载。 请参阅雅虎的YSlow提示 。 您的代码仍应在head部分工作。

我喜欢将我网站的大部分JavaScript放在一个文件中,并将其链接到所有页面。 如果它变得非常大,你可以将它分成几个文件。 这利用了浏览器的缓存。

至于jQuery代码有什么问题。 我不确定。 看起来很正确。 我唯一想知道的是事件参数。 试着完全解决这个问题。 我知道函数是允许的参数,但我通常使用“this”代替。 另外,尝试重命名参数。

母版页通常存储在/Views/Shared/Site.Master中,而脚本位于/ Scripts中,所以这些:

   

应该

   

但我建议使用帮手:

  public static class Helper { private static string ScriptsRoot = "~/scripts/"; public static string ScriptUrl (string scriptFile) { return VirtualPathUtility.ToAbsolute (ScriptsRoot + scriptFile); } } 

然后像这样引用你的脚本: