0

我有一个 div:

<div id="dialog"></div>

还有一个 javascript 函数可以打开一个 JQueryUI 对话框:

ui_info(title,txt)
{
     $('#dialog').attr('title', title).text(txt).dialog({
    width: 500,
    buttons:
[{
    text: 'OK',
    click: function ()
    {
        $(this).dialog('close');
    }
}
],
});
return false;
}

我的问题是,如果我在获得标题和文本后调用此方法。但是如果我再次调用它,文本会发生变化,但是对话框的标题保持不变。例如,如果我这样调用这个函数:

ui_info('First title','This is the first text');

我得到标题“这是标题 1”和文本“这是第一个文本”。然后,如果我再次这样调用它:

ui_info('Next title','The text is different now');

对于文本,我会得到“现在的文本不同”,这是我想要的,但对于标题,我仍然会得到“第一个标题”,而我期待“下一个标题”

4

1 回答 1

1

使用$(this).dialog('destroy');代替$(this).dialog('close');

您的版本演示:http: //jsfiddle.net/wCWTE/1/

修正版演示:http: //jsfiddle.net/wCWTE/

如果您仍想使用该close方法,您可以使用open事件并使用对话框设置默认给出的选项设置标题,因此您将拥有:

function ui_info(title,txt)
{
  $('#dialog').text(txt).dialog({
    width: 500,
    buttons:
    [{
       text: 'OK',
       click: function ()
       {
          $(this).dialog('close');
       }
    }],
    open:function() {
        $(this).dialog('option','title',title)
    }
  });
}

请看这个新的演示http://jsfiddle.net/wCWTE/2/

于 2012-10-29T07:58:35.870 回答