Jquery-UI:对话框不是函数错误

时间:2010-09-24 23:46:12

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

例如我通过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);

});

2 个答案:

答案 0 :(得分:5)

有关更新的问题:您仍然遇到与bfeore相同的问题,如下所示:

$(document).click(newDialog);

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

$(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

答案 1 :(得分:1)

检查dialog插件是否已正确安装。不应该有任何其他原因,为什么这不起作用。

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