【问题标题】:Jquery-UI: dialog is not a function errorJquery-UI:对话框不是函数错误
【发布时间】:2011-10-30 21:07:53
【问题描述】:

例如我通过newDialog("This is title !", "this is my content"); 调用它

function newDialog(mytitle, mycontent){
   var $dialog = $('<div id="mydialog"></div>')
        .html(mycontent)
        .dialog({
            autoOpen: false,
            modal: false,
            title: mytitle
        });
    $dialog.dialog('open');
    return false
}

这是错误

错误:$("").html(mycontent).dialog 不是函数

这是什么意思?我已使用 firebug 插件确保所有 jquery-UI 和 jquery js 文件都已完全加载,以确认所有这些。

我不明白为什么它会突然停止工作。

我已经用 $(document).click(newDialog); 试过了。和 $('body').delegate(':not(#mydialog *, #mydialog)','click', newDialog);但错误并没有消失。使用后者,因此如果意外单击对话框,则不会生成新对话框。

$(top.document).ready(function () {   
var fruits = new Array();

   $(document).click(newDialog("happy title", "happy content to keep everyone happy"));
   //$('body').delegate(':not(#mydialog *, #mydialog)','click', newDialog);

});

【问题讨论】:

    标签: jquery jquery-ui jquery-ui-dialog


    【解决方案1】:

    对于更新的问题:当这样调用它时,您仍然遇到与 bfeore 相同的问题:

    $(document).click(newDialog);
    

    它被调用了没有任何参数,这意味着.html()仍然被undefined传入。你eiher需要传递参数,例如:

    $(document).click(function() { newDialog("Title", "Content"); });
    

    或者给参数一些默认值,例如:

    function newDialog(mytitle, mycontent){
      mytitle = mytitle || "Default Title";
      mycontent = mycontent || "Default Content";
    

    对于原始问题: 您的变量名称已关闭,这是:

    .html(mycontent)
    

    应该是:

    .html(mycon)
    

    目前,由于它是未定义的,它正在调用.html() 获取一个字符串,而不是设置 html。标题也是如此,你的参数是mytit,你要使用的变量是mytitle

    【讨论】:

    • 不幸的是,我希望这是一个简单的 var 命名问题。我确保使用了相同的变量,并且发生了相同的错误。
    • @Kim - 在这些情况下,您仍然没有传递任何参数,这意味着它 仍然 未定义,导致同样的错误,您必须实际传递 mycontent 参数,或者给它一个默认值...否则它将是undefined。我很欣赏你的反对票...你在这里更正了一个方面之后,你正在驳回答案,但你仍然有 same 问题,你将 undefined 传递给.html(var).
    • 叹息。我写了那个简单的例子,但写得不对。这就是为什么您要解决错误的问题。我的错,修复了原始示例代码。但是错误仍然出现。我不知道为什么它几乎就像 jquery-ui.js 没有加载但firebug显示它有。
    • @Kim - 你读过我更新的答案了吗?这是同一个问题,传递给.html(var) 的变量是undefined,即使在您当前的问题中也是如此。此外,当您有理由投票时,question 错误(当答案修复 that 问题时)并不是真正的正当理由,并且会驱使人们拒绝回答您的问题未来的问题:)
    • 我投了反对票,因为你说的是​​显而易见的,并没有真正解决预期的问题。然而,这是一个写得不好的例子,所以我明白你为什么生气,因为你确实为写得不好的例子提供了一个正确的解决方案。最后,什么都解决不了。无论如何我都投了赞成票,但不会像现在这样接受这个答案。
    【解决方案2】:

    检查dialog 插件是否已正确安装。这不应该有任何其他原因。

    我能否借此机会进行一些无耻的自我推销,为您提供另一种选择。我写了一个 jQuery 插件来做你想做的事情。如果您有兴趣,它是开源的:http://code.google.com/p/dialogwrapper/

    【讨论】:

    • 你知道我总是乐于接受更好的解决方案。感谢您的建议将看看它。你是对的,不应该有任何其他原因导致这不起作用,是的,它不是代码,而只是在另一个应用程序上运行的 javascript,应用程序本身导致了问题。在其他地方测试了相同的 javascript,它运行良好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    相关资源
    最近更新 更多