Jquery对话问题

Bes*_*her 3 jquery-plugins

大家好我正在开发一个MVC应用程序,我想使用Jquery对话框.我有以下场景:我有Telerik树视图,当我点击任何节点时,我希望打开对话框并显示有关此节点的信息.首先,我添加以下脚本来初始化对话框:

    $(document).ready(function () {
        $("#dialog").dialog("destroy");
        $("#dialog-form").dialog({
            autoOpen: false,
            height: 500,
            width: 500,
            modal: true,
            buttons: {
                Cancel: function () {
                    $(this).dialog('close');
                }
            }
        });
    });
Run Code Online (Sandbox Code Playgroud)

然后在OnSelect中编写以下代码(Telerik的客户端事件)

        $('#dialog-form').dialog('open');
        $('#dialog-form').load('<%= Url.Action("SomeAction", "SomeController") %>');
Run Code Online (Sandbox Code Playgroud)

在我的母版页中,我添加了使模态工作所需的脚本文件,如下所示:

<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.dialog.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.core.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.widget.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.button.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.draggable.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.position.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.resizable.js") %>"></script>
Run Code Online (Sandbox Code Playgroud)

当我点击树的节点没有发生任何事情时,chrome开发人员工具显示以下错误:

未捕获的TypeError:对象#没有方法'对话'

似乎脚本注册有错误或类似的东西

对此有任何帮助

Nic*_*ver 6

您需要调整依赖顺序以使其正确,它应该是:

<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.core.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.widget.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.mouse.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.draggable.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.button.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.position.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.resizable.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.dialog.js") %>"></script>
Run Code Online (Sandbox Code Playgroud)

注意添加 ui.mouse.


但是......更简单的方法就是将jQuery UI作为单个文件包含在内,如果您使用的所有组件更简单,更容易更新,并且HTTP请求更少,例如:

<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.ui.js") %>"></script>
Run Code Online (Sandbox Code Playgroud)

您可以在此处将库作为单个文件下载:jQuery UI Download.

或者来自CDN,例如来自Google的最新消息(截至本答复时):

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

为了获益(它们与CDN中包含jQuery本身的好处非常相似),请参阅此问题.

  • @Light - 只是为了踢,如果你使用上面的谷歌CDN版本,你有任何问题吗?如果你*仍然有问题...确保你没有在页面中包含两次jQuery,如果它稍后包含它将覆盖`$`,删除它上面的`$ .ui`方法. (5认同)