JQuery UI对话框。('close');不工作

时间:2012-04-13 13:13:21

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

我有一个包含多个模态jQuery UI对话框的页面,我试图在一个对话框(faq)上建立一个链接,该对话框将关闭该对话框并打开另一个对话框(保修)。以下是相关代码:

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是faq对话框上的一个链接,当单击时,我想触发关闭faq对话框。

    $('#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查看实际操作 - 点击常见问题解答链接

1 个答案:

答案 0 :(得分:2)

您必须在触发对话框后绑定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;
});