最近、WebサイトをアップグレードしてASP.NET MVC 4を使用し、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>
このエラーが発生している理由を誰かが指摘できますか?
ありがとう、アレックス。
.liveメソッドはjQuery v1.7 +で廃止され、jQuery v1.9 +で削除されました。
バグレポート: http://bugs.jquery.com/ticket/1321
説明: 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 migrate plugin をダウンロードして、バンドルに追加します。
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery-migrate-{version}.js"));
更新:移行プラグインがNugetからも利用可能になりました:
PM> Install-Package jQuery.Migrate