Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有jquery代码的脚本块应该放在ASP.NET MVC母版页的何处?_Jquery_Asp.net Mvc - Fatal编程技术网

带有jquery代码的脚本块应该放在ASP.NET MVC母版页的何处?

带有jquery代码的脚本块应该放在ASP.NET MVC母版页的何处?,jquery,asp.net-mvc,Jquery,Asp.net Mvc,刚开始使用jquery时,很难将hello world类型的示例用于asp.net mvc。我在尝试加载带有此脚本的页面时遇到运行时错误“object expected” A.母版页中的脚本标记应放置在何处? 我可能做错了什么?我的页面中肯定有“a”元素 <script src="../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script> <script src="../

刚开始使用jquery时,很难将hello world类型的示例用于asp.net mvc。我在尝试加载带有此脚本的页面时遇到运行时错误“object expected”

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

<script src="../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>

            <script src="../Scripts/jquery.corner.js" type="text/javascript"></script>

            <script type="text/javascript">
                $(document).ready(function() {
                    $("a").click(function(event) {
                        alert("Thanks for visiting!");
                    });
                });
            </script>

$(文档).ready(函数(){
$(“a”)。单击(函数(事件){
警惕(“谢谢光临!”);
});
});
Hmmm

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

另外,我通常在DOM中使用when sinking事件(看起来像您正在尝试这样做)

因此,代码看起来像:

$(document).ready(function()
{
    //  Bind each link to a handler:
    $("a").bind('click dblclick', function(event)
    {
         alert('click');
    })
});
另外,还有一些设计技巧(因为您使用的是与我的心意相近的东西(ASP.NET MVC with jQuery):

在母版页的
元素底部添加一个额外的“ContentPlaceHolder”。这将允许您在页面的“head”部分的适当位置运行特定于页面的javascript,并允许您创建特定于页面的javascript

它看起来像这样:

    <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
</head>
<script type="text/javascript" src="<%= Helper.ScriptUrl("jquery-1.2.6.min.js") %>"></script>
<script type="text/javascript" src="<%= Helper.ScriptUrl("jquery.corner.js") %>"></script>


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

我同意Dan在脚本中添加内容占位符进行链接。但是,就性能而言,头部通常不是放置JavaScript的最佳位置。T最好的位置是在页面的底部。这样你的HTML可以在JavaScript之前加载。请参阅。你的代码应该仍然可以在标题部分工作

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

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

B)我在快速测试页面上检查了您的内联脚本,它工作正常,因此我建议使用安装了FirefoxFireBug插件的FireBug来查找问题:

  • 在Firebug的“脚本”选项卡中,使用右侧的“监视”窗口插入并检查脚本的各个部分,看看它们返回了什么
  • 我首先将
    $
    放在监视窗口中,检查它是否被识别为
    函数()
    :也许jQuery没有正确链接
  • 然后将
    $(“a”)
    放入“监视”窗口,检查它返回的集合是否有正确的编号 集合中与“a”选择器相对应的项目的集合
  • 继续运行部分脚本,直到遇到错误

母版页通常存储在/Views/Shared/Site.master中,而脚本位于/scripts中,因此:

<script src="../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>            
<script src="../Scripts/jquery.corner.js" type="text/javascript"></script>
然后像这样引用脚本:

    <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
</head>
<script type="text/javascript" src="<%= Helper.ScriptUrl("jquery-1.2.6.min.js") %>"></script>
<script type="text/javascript" src="<%= Helper.ScriptUrl("jquery.corner.js") %>"></script>

YSlow提示的通话效果不错。我没有意识到脚本会阻止并行下载。