2012-05-10 18 views
8

"Kaydet" veya "iptal et" tıklandığında kapanmayan bir iletişim modelim var. jQuery UI's official demo page ile karşılaştırdım ve bunun neden işe yaramayacağını anlayamıyorum. İşte Jquery iletişim kipi kapanmıyor

ben ne var:

$(function() { 
      $("#DetailsWindow").dialog({ 
       autoOpen: false, 
       resizable: false, 
       height: 500, 
       width: 600, 
       modal: true, 
       title: 'Appointment Details', 
       buttons: { 
        "Save": function() { 
         $(this).dialog("close"); 
        }, 
        "Cancel": function() { 
         $(this).dialog("close"); 
        } 
       } 
      }); 

      $('button').click(function() { 
       $("#DetailsWindow").dialog("open"); 
      }); 
     }); 

HTML:

<button>A button</button> 
     <div id="DetailsWindow"> 
      <h3>Title</h3> 
      <span>Some Text</span> 
     </div> 

cevap

15

Sizin $('button') sorgu aksi takdirde jQuery iletişim içine de dahil olmak üzere sayfadaki TÜM <button> etiketleri maçları, daha kısıtlayıcı olmalıdır açılmaya neden oluyor.

Ben ana düğme için bir sınıf eklemek öneririz:

$(this).dialog('destroy').remove(); 

yerine: kullanmayı deneyin

$('button.open-details').click(function() { 
    $("#DetailsWindow").dialog("open"); 
}); 
+0

+1, sorun bu. İletişim kutusu kapatılıyor, hemen yeniden açılıyor, çünkü işleyiciniz iletişim kutusundaki 'kaydet' ve 'iptal et' düğmeleri için çalıştırılıyor. –

+1

Cevabım yanıldı, teşekkürler @Rocket – MilkyWayJoe

+0

(Şu anda kaldırılmamış) cevabı yorumunu alıntıyorum: Aslında, düşündüğünüz şey budur. Bu işlevlerin içinde, bu .dialog olarak adlandırdığınız DOM öğesidir. Dokümanlardan ('Seçenekler'> 'düğmeler (nesne)' altında): "Geri arama bağlamı, diyalog elemanıdır" – MilkyWayJoe

1

:

<button class="open-details">A button</button> 

Sonra sizin JavaScript değiştirmek

$(this).dialog("close"); 
İlgili konular