4

在我的 _Layout.cshtml 中,我有以下内容:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>Intranet Ads</title>
        <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <meta name="viewport" content="width=device-width" />
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/modernizr")
        <script type="text/javascript">
            function search() {
                var searchVal = $('#txtSearchString').val();
                $('#adResults #summary').each(function () {
                    if (searchVal == '') {
                        $(this).parent().show();
                    } else {
                        $(this).not(':contains(' + searchVal + ')').parent().hide();
                    }
                });
            }

        function openEditAd(val) {
            if (val != 'admin') {
                $("#edit-content,#edit-background").toggleClass("active");
                $("#txtConfirmationEdit").text = "";
            } else {
                $("#edit-content-admin,#edit-background-admin").toggleClass("active");
                $("#txtConfirmationEdit").text = "";
            }
        }

        function closeEditAd(permission) {
            if (permission != 'admin') {
                if ($("#txtConfirmationEdit").val().trim() != "") {
                    var url = '@Url.Action("Edit", new { id = "__id__" })';
                    window.location.href = url.replace('__id__', $("#txtConfirmationEdit").val());
                }

                $("#edit-content,#edit-background").toggleClass("active");
            } else {
                if ($("#txtConfirmationAdmin").val().trim() != "") {
                    var url = '@Url.Action("Edit", new { id = "__id__" })';
                    window.location.href = url.replace('__id__', $("#txtConfirmationAdmin").val());
                }

                $("#edit-content-admin,#edit-background-admin").toggleClass("active");
            }
        }

        $(document).ready(function () {
            // Handler for .ready() called.
            console.log("hi");
        });


    </script>
</head>
<body>
...
    @Scripts.Render("~/bundles/jquery")
    @RenderSection("scripts", required: false)
</body>

我刚刚添加了:

        $(document).ready(function () {
            // Handler for .ready() called.
            console.log("hi");
        });

最后,我正在尝试实现一个日期选择器,但我得到了

JavaScript 运行时错误:“$”未定义

正如您在我的其他函数中看到的那样,我正在使用 jQuery 命令……这是什么原因?

当我也有这个时,我得到了完全相同的错误:

$(document).ready(
    function () {
        $('.datepicker').datepicker({
            changeMonth: true,
            changeYear: true,
            minDate: "-99Y",
            dateFormat: "dd/mm/yyyy"
        });
    });
4

3 回答 3

5

您必须首先将 JQuery 引用放在页面顶部。浏览器同步加载脚本标签,因此如果您在加载 JQuery 源之前尝试引用 JQuery $,那么您将收到“未定义”错误。

实际上,由于脚本标签会阻止页面的其余部分加载,因此最好将其他脚本标签放在 JQuery 引用下方的底部。这允许浏览器在加载脚本之前先加载和显示您的页面标记。(这可以给人一种页面加载速度更快的印象。)

于 2013-09-20T21:57:17.860 回答
2

我遇到了同样的问题。打开 Views\Shared_Layout.cshtml 并将以下脚本注册的句子从 body 部分的底部移动到 head 部分:

@Scripts.Render("~/bundles/jquery")

@Scripts.Render("~/bundles/bootstrap")

于 2016-11-22T23:00:53.807 回答
0

尝试直接引用它们,即:

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/smoothness/jquery-ui.min.css" rel="stylesheet" type="text/css" />

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
于 2018-03-29T12:53:56.393 回答