【问题标题】:Open event on jqueryUI works intermittentlyjqueryUI 上的打开事件间歇性地工作
【发布时间】:2012-11-14 05:26:33
【问题描述】:

我有一个 jqueryUI 对话框,它向另一个页面发出请求并在对话框中加载内容。

jQuery("#someDialog").dialog({
    autoOpen: true,
    draggable: false,
    resizable: false,
    modal: true,
    open: function() {
        jQuery(this).load('myurl?type=something');
    }
});​

但是,此代码有时只是打开对话框,加载的内容不会显示在对话框中。我怀疑这是因为 open 事件中的异步代码。

有没有办法解决这个问题?

【问题讨论】:

  • 在这里看不到任何问题 jsfiddle.net/paaH3... 你的 #someDialog 元素是静态的吗?这些元素不止一种吗?你是如何打开对话框的?
  • #someDialog 元素是静态的。 myurl 中有一个 jqGrid,它向 URL 发出请求以加载其数据。因此,当一切顺利时,我看到在打开对话框 1) 到 myurl 和 2) 到 'urltoloadGridData` 时进行了两次调用。但是,当模态框中没有加载任何内容时,我只会看到第一个调用,而不是后者。

标签: jquery jquery-ui jquery-dialog


【解决方案1】:

我通常将内容加载到一个变量div中,然后在打开它时将它的html作为对话框的文本。

$('#popupWindow').load('whatever?type=something', function () {

    // using the callback function on .load() we can ensure
    // the content is always loaded before opening the dialog also 

    var _dialogBox = $('<div id="dialogBox" />');

    // put the html inside of the dialog
    _dialogBox.html( $('#popupWindow').html() );


    _dialogBox.dialog({
        autoOpen: true,
        draggable: false,
        resizable: false,
        modal: true
    });​

    _dialogBox.dialog('open');
});

【讨论】:

  • 嗯,非常好的技巧。然而,在我的例子中,这样做是在一个新的寻呼机中打开弹出窗口,而不是一个模态框。
  • 在这种情况下忘记提及 div #popupWindow 已经在页面的 html 和 display:none; 中。这可能就是它在新页面中打开的原因
  • 我不认为 text 是 jQueryUI 的方法之一:api.jqueryui.com/dialog
  • 对不起,我忘了我有一个自定义对话框功能要添加到对话框!更新了代码。基本上你需要动态创建 div 并在其中添加 html。
猜你喜欢
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
相关资源
最近更新 更多