0

以下のコードでjQueryダイアログを開いています。ここでの問題は、それを開いてもう一度クリックしたときで、2回目と3回目はまだ開いています。

まだ開いていない場合は、一度だけ開く必要があります。

        $('.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;
    });
4

2 に答える 2

1

これのことですか?

if (!$dialog.dialog("isOpen")){
    $dialog.dialog("open");    
}
于 2012-07-04T12:41:54.820 に答える
1

なぜあなたはこれをしないのですかmodal :true

この方法では、ユーザーはバックグラウンドで何もクリックしないため、ダイアログが一度だけ開くため、条件を設定する必要はありません。私はこれがあなたが望むものだと思います

var $dialog = $('<div>',{title:'Email'}).dialog({
            autoOpen: false,
            resizable: true,
            modal :true,
            width: 500
        });
于 2012-07-04T12:43:17.553 に答える