错误:TypeError: $(...).dialog 不是函数

IT技术 javascript jquery jquery-ui-dialog
2021-01-19 11:50:35

我在让对话框作为基本功能工作时遇到问题。这是我的 jQuery 源导入:

<script type="text/javascript" src="scripts/jquery-1.9.1.js"></script>
<script type="text/javascript" src="scripts/jquery-ui-1.11.1.js"></script>
<script type="text/javascript" src="scripts/json.debug.js"></script>

网址:

<button id="opener">open the dialog</button>
<div id="dialog1" title="Dialog Title" hidden="hidden">I'm a dialog</div>

<script type="text/javascript">
    $("#opener").click(function() {
            $("#dialog1").dialog('open');
    });
</script>

从周围的帖子来看,这似乎是一个库导入问题。我下载了 JQuery UI Core、Widget、Mouse 和 Position 依赖项。

有任何想法吗?

6个回答

请务必插入完整版的 jQuery UI。你也应该先初始化对话框:

$(function () {
  $( "#dialog1" ).dialog({
    autoOpen: false
  });
  
  $("#opener").click(function() {
    $("#dialog1").dialog('open');
  });
});
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
 
<script src="https://code.jquery.com/ui/1.11.1/jquery-ui.min.js"></script>

<link rel="stylesheet" href="https://code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css" />

<button id="opener">open the dialog</button>
<div id="dialog1" title="Dialog Title" hidden="hidden">I'm a dialog</div>

删除我收到另一个错误“TypeError:this.element.prop 不是函数 this.options.disabled = !!this.element.prop( "disabled" );”
2021-03-26 11:50:35
在我的情况下,我不知道 jquery-ui 库,我只包含了核心 jquery.min.js 并期望它会起作用。通过添加 jquery-ui 库,解决了我的问题。
2021-04-03 11:50:35
将 jQuery 更改为 1.11.1 版我可以工作。绝对是图书馆的问题。解决了。
2021-04-10 11:50:35
@Maged 尝试从 jQuery CDN 加载最新版本的 jQuery 和 jQuery UI,我确定问题出在您的 jQuery 文件上。如您所见,我的演示工作正常。
2021-04-12 11:50:35

如果由于某种原因jQuery加载了两个版本(不推荐),$.noConflict(true)从第二个版本调用会将全局范围的jQuery变量返回到第一个版本的变量。

有时可能是旧版本(或不稳定版本)JQuery文件的问题

溶液使用 $.noConflict();

<script src="other_lib.js"></script>
<script src="jquery.js"></script>
<script>
$.noConflict();
jQuery( document ).ready(function( $ ) {
   $("#opener").click(function() {
            $("#dialog1").dialog('open');
    });
});
// Code that uses other library's $ can follow here.
</script>
这就是我的问题的原因,最后我删除了一个版本,这个解决方案确实给了我提示。
2021-03-31 11:50:35

如果您从_Layout.cshtml页面中注释掉以下代码,模态弹出窗口将开始工作:

    </footer>

    @*@Scripts.Render("~/bundles/jquery")*@
    @RenderSection("scripts", required: false)
    </body>
</html>
任何人都可以详细说明为什么?
2021-03-30 11:50:35
我在我的 ViewPage 上有这个 @Scripts.Render("~/bundles/jquery")(不是布局,但布局也有这个代码),当我删除它时,我的 .js 文件终于可以工作了,谢谢你的信息......我和我的同事正在搞乱 JQuery,我认为他添加了那部分,因为他做了什么,没有任何效果......为什么我不知道我是一个 JS n00b
2021-04-06 11:50:35

将 jQueryUI 更改为1.11.4并确保 jQuery 没有添加两次。

我刚刚经历了这一行:

$('<div id="editor" />').dialogelfinder({

我收到错误“dialogelfinder 不是函数”,因为另一个组件在加载较新版本后插入了加载旧版本 JQuery (1.7.2) 的调用。

一旦我注释掉第二次加载,错误就消失了。