$未定义,但仅限于$(function())

时间:2015-09-02 08:28:23

标签: javascript jquery asp.net-mvc

在我的MVC局部视图中,下面没有触发:

$(function() {
   alert('test');
});

控制台报告'$ is not defined.',似乎jQuery未在页面中引用。

但是,在同一个脚本块中,我有其他完美的jQuery函数,所以这个问题似乎与$(function())$( document ).ready() on-load函数隔离。

以下是局部视图中的完整脚本块:

<script type="text/javascript">

    $(function () {
        debugger;
        alert('hi');
    });

    function updatePaymentTypes() {
        $("#paymentTypes").empty();
        $('#paymentTypes').append($('<option></option>').val("").html("- Please Select -"));
        var getVoucherPaymentTypesUrl = "@Url.Action("getVoucherPaymentTypes", "Supplier", new { id = Model.Supplier.Id, area = "Configurations" })";
        $.post(getVoucherPaymentTypesUrl, { "voucherPaymentMethodId": $("#paymentMethods").val() },
            function (data) {
                for (i = 0; i < data.length; i++) {
                    var paymentType = data[i];
                    $('#paymentTypes').append($('<option></option>').val(paymentType.Id).html(paymentType.Name));

                }
                // Force event
                paymentTypeSelected();
            });
    }

    function paymentTypeSelected() {
        var getCardDetailsViewUrl = "@Url.Action("getVoucherCardDetailsView", "Supplier", new { id = Model.Supplier.Id, area = "Configurations" })";
        $.post(getCardDetailsViewUrl, { "voucherPaymentTypeId": $("#paymentTypes").val() }, 
            function (data) {
                $("#cardDetailsView").html(data);
            }).fail(function (error) {
                debugger;
            });
    }


</script>

部分视图在jQuery Accordion div中呈现,父视图中的所有jQuery函数,包括$(function())事件都正常触发。

可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

正如大多数人在评论中指出的那样,问题是在呈现jQuery.js的脚本引用之前加载了部分视图。

确保在主视图的顶部添加了对jQuery的脚本引用。