无法关闭JSFiddle上的对话框

时间:2013-09-07 23:39:04

标签: javascript jquery html

我在JSFiddle

上尝试了以下操作

HTML:

<div id="dialog" title="Basic dialog">
  <p>Hello.</p>
</div>

<a href="www.google.com">Link</a>

的JavaScript

$(document).ready(function() {
    $( "#dialog" ).dialog({ autoOpen: false }); 
    $(document.body).on('click',"a",function(event){ 
        event.preventDefault();        
        $("#dialog").dialog('open');
    });  
});

点击关闭按钮时无法关闭对话框。为什么?

2 个答案:

答案 0 :(得分:2)

当关闭点击气泡到文档级别时,您将重新打开对话框。关闭[x]对话框也是<a>

在最开始时将此行添加到该“click”处理程序:

    if ($(this).hasClass('ui-dialog-titlebar-close')) return;

或者,你可以通过给它一个类或类别来使你的“开放对话”链接更具体:

    <a href=# class=open-dialog>Link</a>

然后:

    $('body').on('click', '.open-dialog', function(event) {
      event.preventDefault();
      $('#dialog').dialog('open');
    });

通过使链接打开与关闭按钮不同的对话框,可以避免歧义。

答案 1 :(得分:0)

您必须定义CLOSE功能:

<强> HTML

<div id="dialog" title="Basic dialog">
  <p>Hello.</p>
</div>

<a id="open" href="www.google.com">Link</a>

<强>的JavaScript

$(document).ready(function() {

    $( "#dialog" ).dialog({ autoOpen: false });

    $(document.body).on('click',"#open",function(event){ 
        event.preventDefault();        
        $("#dialog").dialog('open');
    });   

    $(document.body).on('click',".ui_icon_closethick",function(event){ 
        event.preventDefault();        
        $("#dialog").dialog('close');
    }); 
});

工作解决方案:http://jsfiddle.net/QTqUr/1/