对象不支持属性或方法“对话框”
参考AjaxControlToolkit ,我从MVC创建了一个UI对话框。
Layout.cshtml
@ViewBag.Title - My ASP.NET MVC Application @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr")
Index.cshtml
jQuery UI Hello World
You now have the power of ASP.NET, the simplicity of client-side scripting with jQuery, and the looks of jQuery UI. Congrats, web slinger!
$(function () { $('#dialog').dialog({ autoOpen: false, width: 600, buttons: { "Ok": function () { $(this).dialog("close"); }, "Cancel": function () { $(this).dialog("close"); } } }); $("#show-dialog").button().click(function () { $('#dialog').dialog('open'); return false; }); });
我在IE和Firefox中检查过。 Firefox抛出
Typeerror $(…)。对话框不是一个函数
IE抛出
对象不支持属性或方法“对话框”
有什么建议?
我想到的有三点可能值得检查:
-
永远不要在ASP.NET MVC应用程序中硬编码URL。 始终使用帮助程序(或推荐的程序包):
@ViewBag.Title - My ASP.NET MVC Application @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") -
确保在
_Layout.cshtml
的末尾没有@Scripts.Render("~/bundles/jquery")
调用,因为这将包含两次jQuery。 -
如果在
_Layout.cshtml
的末尾有一个专用的部分用于自定义脚本,如@RenderSection("scripts", required: false)
,请确保已将自定义脚本放在该部分中(请注意,因为此RenderSection位于DOM的结尾你不需要将你的脚本包装在document.ready事件中,因为在它执行时,DOM已经被加载了):jQuery UI Hello World
You now have the power of ASP.NET, the simplicity of client-side scripting with jQuery, and the looks of jQuery UI. Congrats, web slinger!
在我的情况下,这个错误是因为我忘了添加jquery-ui文件引用:
当您忘记添加jquery-ui.js
时,通常会发生这种情况。 包含jquery-ui-{version}.js
的顺序也很重要!
你应该包括jquery-{version}.js
然后jquery-ui-{version}.js
。 然后就在标记之前,包含您的自定义javascript文件。
它将解决Javascript运行时错误:[ 对象不支持属性或方法’对话’ ],[ ‘$’未定义 ]
你的代码对我来说似乎没问题。 您可以检查您的jQuery UI自定义是否包含对话框function(或尝试下载完整的jQuery UI以进行测试)并检查JS脚本的URI是否正确。
包括以下三行代码: