jQuery对话框:如果它已经打开,不要打开它?

时间:2012-07-04 12:02:42

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

我通过以下代码打开jQuery Dialog。这里的问题是当我打开它并再次点击所以它仍然是第二次和第三次打开。

如果它还没有打开,我需要打开一次。

        $('.view_full_email').live('click',function(){
        var $tr = $(this).closest('tr');
        var subject = $tr.children('td:eq(2)').text(),
        from = $tr.children('td:eq(3)').text(),
        to = $tr.children('td:eq(4)').text(),
        cc = $tr.children('td:eq(5)').text(),
        bcc = $tr.children('td:eq(6)').text(),
        mesg_body = $tr.children('td:eq(7)').text();

      var $dialog = $('<div>',{title:'Email'}).dialog({
           autoOpen: false,
           resizable: true,
           width: 500
       });
      var email_data = "<table><tr><td><b>Subject :</b>"+ subject +"</td></tr><br/><tr><td><b>From :</b> "+ from +"</td></tr><tr><td><b>To :</b> "+ to+"</td></tr><tr><td><b>CC  :</b> "+ cc+"</td></tr><tr><td><b>BCC  : </b> "+ bcc+"</td></tr><tr><td><b> Message Body :</b> <textarea rows='25' cols='100' readonly = 'readonly'>"  + mesg_body+ "</textarea></td></tr></table>";
       $('<div>').html(email_data).appendTo($dialog);
       $dialog.dialog('open');
        return false;
    });

2 个答案:

答案 0 :(得分:1)

你是说这个?

if (!$dialog.dialog("isOpen")){
    $dialog.dialog("open");    
}

答案 1 :(得分:1)

为什么不这样做modal :true

这样用户不会在后台点击任何内容,因此无需放置条件,因为您的对话框只会打开一次。我想这就是你想要的

var $dialog = $('<div>',{title:'Email'}).dialog({
            autoOpen: false,
            resizable: true,
            modal :true,
            width: 500
        });