2012-05-10 12 views
8

Mam modalny dialog, który nie zamyka się po kliknięciu "zapisz" lub "anuluj". W porównaniu do jQuery UI's official demo page i nie mogę znaleźć, dlaczego to nie działa.Modem dialogowy Jquery nie zamykający się

Oto co mam:

$(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> 

Odpowiedz

15

Twój $('button') zapytania powinny być bardziej restrykcyjne, inaczej dopasowuje wszystkie <button> tagi na stronie, w tym wewnątrz okna dialogowego jQuery , powodując jego otwarcie.

Proponuję dodanie klasy do głównego przycisku:

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

a następnie zmienić swoje JavaScript do:

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

+1, to jest problem. Okno dialogowe jest zamykane, a następnie natychmiast ponownie otwierane, ponieważ program obsługi uruchamiany jest dla przycisków "zapisz" i "anuluj" w oknie dialogowym. –

+1

Moja odpowiedź była błędna, dzięki @Rocket – MilkyWayJoe

+0

Cytując komentarz z (teraz usunięty) odpowiedź: Właściwie to jest to, co myślisz, że jest. Wewnątrz tych funkcji jest to element DOM, który nazwałeś .dialog. Z dokumentacji (w "Opcje"> "przyciski (obiekt)"): "Kontekst wywołania zwrotnego jest elementem dialogowym" – MilkyWayJoe

1

Spróbuj użyć:

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

Zamiast:

$(this).dialog("close"); 
Powiązane problemy