【问题标题】:JQuery UI Dialog dialog.('close'); not workingJQuery UI Dialog dialog.('close');不工作
【发布时间】:2012-04-13 13:13:20
【问题描述】:

我有一个包含多个模态 jQuery UI 对话框的页面,我正在尝试在一个对话框(常见问题解答)上创建一个链接,该链接将关闭该对话框并打开另一个对话框(保修)。下面是相关代码:

var $faqIframe = $('<iframe />', {
                name: 'myFrame',
                id:   'myFrame',
                src: "modal_faq.html",
                width:"100%",
                height:"100%",
                align:"left",
                scrolling:"auto",
                frameborder:"0"
            }); 

var $warrantiesIframe = $('<iframe />', {
                name: 'myFrame1',
                id:   'myFrame1',
                src: "modal_warranties.html",
                width:"100%",
                height:"100%",
                align:"left",
                scrolling:"auto",
                frameborder:"0"
            });

然后,打开 faq iFrame

$(function(){
    $('#faqDialog').dialog({
        autoOpen: false,
        width: 780,
        height: 460,
        modal: true
    });

    $('#faqDialog').append($faqIframe.clone());

    // Dialog Link
    $('#faq_link, #faq_link1').click(function(){
        $('#faqDialog').dialog('open');


        return false;
    });

这工作正常,按预期打开对话框。我也有类似的保修对话框代码。这是当前不起作用的代码。 #warranty_link2 是常见问题对话框上的一个链接,单击该链接时,我想触发关闭常见问题对话框。

    $('#warranty_link2').on("click", function(event){
        $('#faqDialog').dialog('close');
    });
}

我试过了

$('#faqDialog').dialog('close');
$('#faqDialog').dialog('hide');
$('#faqDialog').dialog('destroy');

我也尝试过使用“live”而不是“on”,但也没有使用这两者中的任何一个 还尝试使用 var $faqIframe 引用它,如

$faqIframe.dialog('close') 

没有结果。

我知道 click 事件正在触发,因为我输入了一个有效的 console.log。

我做错了什么,如何关闭此对话框?

http://www.solarkit2go.com 上查看它的实际效果 - 点击常见问题链接

【问题讨论】:

  • 你为什么使用 iframe?看起来您只是将它们克隆到当前的 html 页面。为什么不将 iframe 内容作为隐藏的 div 包含在内?
  • 也许 $('#faqDialog') 不存在或者它们不止一个 div。在此处创建示例jsfiddle.net
  • @Floradu88 确实存在,而且只有一个 div,查看solarkit2go.com,点击常见问题链接
  • @jrummell iframe 的内容是单独的 html 文件,因此 iframe
  • @Mike Precisely ... 将您的 iframe html 移动到您当前的 html 文件中。您可以通过 ajax 加载它或将其移动到服务器端。

标签: jquery jquery-ui jquery-ui-dialog


【解决方案1】:

您必须在触发对话框后绑定 onclick 事件。见下文

$(function(){
   $('#faqDialog').dialog({
    autoOpen: false,
    width: 780,
    height: 460,
    modal: true
});

$('#faqDialog').append($faqIframe.clone());

// Dialog Link
$('#faq_link, #faq_link1').click(function(){
    $('#faqDialog').dialog('open');

    $('#warranty_link2').click(function(event){
        $('#faqDialog').dialog('close');
    });

    return false;
});

【讨论】:

  • 我试过了: $('#faq_link, #faq_link1').click(function(){ $('#faqDialog').dialog('open'); $('#warranty_link2' ).on("click", function(event){ $('#faqDialog').dialog('close'); }); return false; }); - 但现在点击事件不会触发
  • 我也试过 $(".ui-dialog-titlebar-close").trigger('click');但这也行不通
  • 奇怪。使用 Chrome 的控制台,看看有没有错误,如果有,粘贴到这里
  • 由此产生的控制台中没有错误。我有另一个产生错误的模式,但到目前为止它没有影响任何东西
猜你喜欢
  • 1970-01-01
  • 2018-05-25
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
相关资源
最近更新 更多