Visual Studio 2015主页jQuery问题

时间:2015-12-04 23:26:12

标签: jquery visual-studio-2015

我有一个看起来像这样的MasterPage:

<!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml" runat="server">

    <head runat="server">
        ...
        <script src="Scripts/jquery-2.1.4.min.js"></script>
        ...
        <asp:ContentPlaceHolder ID="cphHead" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form2" runat="server" autocomplete="off" >
            <asp:ContentPlaceHolder ID="cphContent" runat="server">
            </asp:ContentPlaceHolder>
        </form>
    </body>
</html>

我有一个看起来像这样的页面:

<asp:Content ID="cphHeader" ContentPlaceHolderID="cphHead" runat="server" >
    <script type="text/javascript">
        $(function () {
            $get('<%=txtDueDate.ClientID%>').datepicker();
        });
    </script>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="cphContent" runat="Server">
    ...
</asp:Content>

显示页面时,我们收到$ is not defined错误,因为jQuery在调用时未定义。它在包含源代码之前生成子脚本,源代码如下:

<script type="text/javascript">
        $(function () {
            $get('<%=txtDueDate.ClientID%>').datepicker();
        });
</script>
<script src="Scripts/jquery-2.1.4.min.js"></script>

这不是VS 2013的问题。

2 个答案:

答案 0 :(得分:1)

我不确定,但似乎您在datepicker.js包含之前包含了Jquery.js,如果是这样,您应该撤消订单并先调用Jquery。

答案 1 :(得分:0)

我的建议是将所有库代码放在头脑中,将任何应用程序代码放在身体底部。

这样,您的库全部被加载,如果您的用户脚本失败,它将不会停止加载HTML。

因此,在您的方案中,您的MasterPage将如下所示:

<!DOCTYPE html>
    <html lang="en" xmlns="http://www.w3.org/1999/xhtml" runat="server">

    <head runat="server">
        ...
        <script src="Scripts/jquery-2.1.4.min.js"></script>
        ...
    </head>
    <body>
        <form id="form2" runat="server" autocomplete="off" >
            <asp:ContentPlaceHolder ID="cphContent" runat="server">
            </asp:ContentPlaceHolder>
        </form>

        <asp:ContentPlaceHolder ID="cphHead" runat="server">
        </asp:ContentPlaceHolder>
    </body>
</html>

我会花时间将cphHead重命名为更有意义的内容,但这已经是网上推荐的做法。