29

最近、ASP.NET MVC 4 を使用するように Web サイトをアップグレードし、jQuery 検証バンドルをレンダリングする次のコードを用意しました。

しかし、次のエラーが表示されます。

Microsoft JScript runtime error: Object doesn't support property or method 'live'

テキストボックスをクリックすると、次のエラーが表示されます。

Unhandled exception at line 1234, column 5 in http://localhost:13112/Scripts/jquery.validate.js

0x800a138f - Microsoft JScript runtime error: Unable to get value of the property 'call': object is null or undefined

私のバンドルコード:

    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

私の _Layout.cshtml コード:

    @Styles.Render("~/Content/css")
    @Styles.Render("~/Content/themes/base/css")
    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/jqueryval")
    @Scripts.Render("~/bundles/jqueryui")
    @Scripts.Render("~/bundles/modernizr")

レンダリングされた HTML は次のとおりです。

<link href="/Content/site.css" rel="stylesheet"/>

        <link href="/Content/themes/base/jquery.ui.core.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.resizable.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.selectable.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.accordion.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.autocomplete.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.button.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.dialog.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.slider.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.tabs.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.datepicker.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.progressbar.css" rel="stylesheet"/>
<link href="/Content/themes/base/jquery.ui.theme.css" rel="stylesheet"/>

        <script src="/Scripts/jquery-1.9.0.js"></script>

        <script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>

        <script src="/Scripts/jquery-ui-1.9.2.js"></script>

        <script src="/Scripts/modernizr-2.6.2.js"></script>

このエラーが発生する理由を誰かが指摘できますか?

ありがとう、アレックス。

4

1 に答える 1

49

.live メソッドは jQuery v1.7+ で廃止され、jQuery v1.9+ で削除されました。

バグレポート: http://bugs.jquery.com/ticket/13213
説明: http://jquery.com/upgrade-guide/1.9/#live-removed

.live() が削除されました

.live() メソッドは jQuery 1.7 以降非推奨となり、1.9 で削除されました。代わりに .on() メソッドを使用するようにコードをアップグレードすることをお勧めします。たとえば、$("a.foo").live("click", fn) と完全に一致させるには、$(document).on("click", "a.foo", fn) と記述できます。詳細については、.on() のドキュメントを参照してください。当面は、jQuery Migrate プラグインを使用して .live() 機能を復元できます。

修正方法: jquery 移行プラグインをダウンロードして、バンドルに追加します。

  bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
              "~/Scripts/jquery-{version}.js",
              "~/Scripts/jquery-migrate-{version}.js"));

更新: 移行プラグインは Nuget からも利用できるようになりました:

PM> インストール パッケージ jQuery.Migrate

于 2013-01-16T11:43:18.223 に答える