带有动态内容的jQuery对话框

DEH*_*DEH 22 jquery jquery-ui-dialog

我想在运行中创建一个jQuery对话框.我正在使用这个:

var newDiv = $(document.createElement('div')); 
$(newDiv).html('hello there');
$(newDiv).dialog();
Run Code Online (Sandbox Code Playgroud)

然后我在html标题中有这个:

<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.1.custom.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

当我尝试在IE7中运行JS时,我在$(newDiv).dialog()上得到以下错误; line:Object不支持此属性或方法.

有谁知道发生了什么?

Nic*_*ver 60

您的代码有效,您可以在此处进行测试,这意味着您可能有一个脚本包含问题,请确保您的js文件位于页面旁边的文件夹下,或者如果您希望它们来自站点根目录,请/js改用.

或者,考虑使用CDN.

你可以让你的代码更高效(我意识到这只是一个测试),像这样:

var newDiv = $(document.createElement('div')); 
newDiv.html('hello there');
newDiv.dialog();
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为newDiv已经是一个jQuery元素,没有理由每次克隆对象......或者更短一些:

$('<div />').html('hello there').dialog();
Run Code Online (Sandbox Code Playgroud)


Cha*_*ehn 19

以下是动态创建对话框及其消息的另一种方法:

     $('<div></div>').dialog({
        modal: true,
        title: "Confirmation",
        open: function() {
          var markup = 'Hello World';
          $(this).html(markup);
        },
        buttons: {
          Ok: function() {
            $( this ).dialog( "close" );
          }
        }
      });  //end confirm dialog
Run Code Online (Sandbox Code Playgroud)

看到它在行动:http://jsfiddle.net/DYbwb/