【问题标题】:jquery ui dialog, open new dialog and close dialog behindjquery ui对话框,打开新对话框并关闭对话框
【发布时间】:2012-01-25 13:34:43
【问题描述】:

我的网站有一个页脚,可打开 4 个不同的对话框并从独立页面加载内容。

页脚页面可以通过搜索引擎输入或输入url独立打开。

我有一个打开页脚对话框的函数:

function FooterPopup(){
    $(document).ready(function(){
        $('#footerContactUs').on("click",function(){
            var $dialog=$('<div></div>').load($('#footerContactUs').attr('href')).dialog({
                close: function(event,ui){$(this).remove ();},
                autoOpen:false,
                width:700,
                height:610,
                resizable:'false',
                modal:true,
                show:'blind',
                hide:{effect:'blind',duration:300},
                dialogClass:'Contact'
            });
            $dialog.dialog('open');
            return false;
        });
    })
}

独立页面具有在不同功能中打开另一个对话框的链接,

所以我有 2 种情况

1.dialog 在另一个对话框之上打开。

2.dialog 从一个独立的页面打开。

代码:

function Consult(){
    $(document).ready(function(){
        $('.ConsultHotels').on("click",function(){
            var $dialog=$('<div></div>').load($('.ConsultHotels').attr('href')).dialog({
                modal:true,
                close: function(event,ui){$(this).remove();
                $('.ui-datepicker').remove();},
                autoOpen:false,
                width:750,
                height:590,
                resizable:'false',
                show:'blind',
                hide:{effect:'blind',duration:300},
                open:function(event,ui){$('body').find('.ui-dialog-content').eq(0).dialog("close");},
                dialogClass:'ConsultClass'
            });
            $dialog.dialog('open');
            return false;
        });
    });
}

我的问题是我不知道如何在第一种情况下关闭“父”对话框而不在第二种情况下关闭对话框。

请帮忙,

谢谢。

【问题讨论】:

  • 您知道这些函数中不需要$(document).ready(function(){

标签: javascript jquery jquery-ui jquery-selectors


【解决方案1】:

为什么不在打开新对话框之前关闭所有打开的对话框?

$('.ConsultHotels').on("click",function(){
  // first close any open dialogs.  This approach is used in stead of just doing a .hide()
  //  because it will invoke any dialog close callbacks.
  $('.ui-dialog-titlebar-close:visible').click(); 

  // now initialize your dialog.
  var $dialog = $('<div></div>').load($('.ConsultHotels').attr('href')).dialog();
});

【讨论】:

  • 唯一的是,当我关闭第一个对话框并打开第二个对话框时,“.ui-widget-overlay”没有出现。也许是因为我正在做 - 在第一个对话框中关闭:function(event,ui){$(this).remove ();}?如何找回“.ui-widget-overlay”?
  • 在删除之前销毁对话框小部件,否则它仍然会在内存中初始化.. $(this).dialog("destroy").remove();
  • 好的,但它仍然没有在第二个对话框中打开“.ui-widget-overlay”,尽管“modal:true”。
  • 您使用的是什么版本的 jquery ui?在这个小提琴中似乎工作正常:jsfiddle.net/fordlover49/9p2Y7 确保你也删除了打开的事件处理程序?如果它仍然不起作用,您可以创建一个重现问题的 jsfiddle 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-10
  • 2011-11-20
  • 2012-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
相关资源
最近更新 更多