应该将带有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); } }
然后像这样引用你的脚本: