2012-05-10 41 views
8

Tôi có một phương thức hộp thoại không đóng khi nhấn "lưu" hoặc "hủy". Tôi đã so sánh với jQuery UI's official demo page và dường như không thể tìm thấy lý do tại sao điều này sẽ không hoạt động.Phương thức hộp thoại Jquery không đóng

Dưới đây là những gì tôi có:

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

Trả lời

15

truy vấn $('button') của bạn nên được hạn chế hơn, nếu không nó phù hợp với TẤT CẢ <button> thẻ trên trang web, bao gồm cả những người bên trong hộp thoại jQuery , khiến nó tiếp tục mở.

tôi sẽ đề nghị bổ sung thêm một lớp học để nút chính của bạn:

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

Và sau đó thay đổi của bạn hoạt Javascript để:

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

+1, đây là vấn đề. Hộp thoại đang được đóng, sau đó mở lại ngay lập tức, bởi vì trình xử lý của bạn được chạy cho các nút 'lưu' và 'hủy' trên hộp thoại. –

+1

Câu trả lời của tôi sai, cảm ơn @Rocket – MilkyWayJoe

+0

Trích dẫn nhận xét từ câu trả lời (hiện đã bị xóa): Trên thực tế, đó là những gì bạn nghĩ. Bên trong các hàm đó, đây là phần tử DOM mà bạn gọi là .dialog. Từ các tài liệu (trong 'Tùy chọn'> 'nút (đối tượng)'): "Ngữ cảnh của cuộc gọi lại là phần tử hộp thoại" – MilkyWayJoe

1

Thử sử dụng:

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

Thay vì:

$(this).dialog("close"); 
Các vấn đề liên quan