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

KJW*_*KJW 1 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
}
Run Code Online (Sandbox Code Playgroud)

这是错误

错误:$("").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);

});
Run Code Online (Sandbox Code Playgroud)

Nic*_*ver 5

有关更新的问题:您仍然遇到与bfeore相同的问题,在调用时如下:

$(document).click(newDialog);
Run Code Online (Sandbox Code Playgroud)

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

$(document).click(function() { newDialog("Title", "Content"); });
Run Code Online (Sandbox Code Playgroud)

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

function newDialog(mytitle, mycontent){
  mytitle = mytitle || "Default Title";
  mycontent = mycontent || "Default Content";
Run Code Online (Sandbox Code Playgroud)

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

.html(mycontent)
Run Code Online (Sandbox Code Playgroud)

应该:

.html(mycon)
Run Code Online (Sandbox Code Playgroud)

目前,因为它是不确定的,它调用.html() 得到一个字符串返回,而不是设置的HTML.标题也是如此,您的参数是mytit,您尝试使用的变量是mytitle.

  • 我贬低了,因为你说的是​​显而易见的,并没有真正地解决预期的问题.然而,这是一个写得很糟糕的例子,所以我明白你为什么生气,因为你确实为写得不好的例子提供了正确的解决方案.最后,没有解决任何问题.无论如何我都投了赞成票,但现在不会接受这个答案. (2认同)