2013-08-05 26 views
16

Sự khác biệt giữa .dialog("close").dialog("destroy") trong jquery-ui là gì?Sự khác biệt giữa .dialog ("close") và .dialog ("destroy")

Tôi có một tập lệnh mà nhà phát triển trước đó đã sử dụng .dialog("destroy") nhưng bây giờ tôi đã thực hiện một số hành động khi hộp thoại đóng. Tôi đã tìm thấy beforeclose được gọi với .dialog("close") chứ không phải với .dialog("destroy"). Vì vậy, tôi đã thay đổi phương thức từ destroy thành close để làm cho nó hoạt động.

Vì vậy, có bất kỳ điều gì tôi sẽ bỏ lỡ nếu tôi sử dụng .dialog("close") và không phải .dialog("destroy")?

PS: Hộp thoại đang sử dụng các nút tùy chỉnh để tự đóng, và .dialog("close") đang kêu gọi sự kiện click của nút

+2

Bắt đầu tại đây: http://api.jqueryui.com/dialog/#method-close – Prasanth

+0

Thankyou @Parsanth hữu ích. Tôi googled rất nhiều nhưng không tìm thấy gì: p .. https://www.google.com/search?q=difference+between+dialog+close+and+dialog+destroy – zzlalani

Trả lời

23

close lá hộp thoại cấu hình, nhưng vô hình, vì vậy bạn có thể mở lại nó một lần nữa với .dialog('open').

destroy sẽ hoàn toàn định cấu hình lại hộp thoại. Nó sẽ xóa tất cả các phần tử giao diện người dùng đã được thêm vào DOM và mọi trình xử lý sự kiện có liên quan.

destroy sẽ không loại bỏ các yếu tố đó đã tổ chức các nội dung của hộp thoại (tức là yếu tố mà bạn gọi .dialog trên)

5

Từ Docs:

phá hủy:

Xóa hoàn toàn chức năng của hộp thoại. Điều này sẽ trả về phần tử về trạng thái trước khi bắt đầu.

gần:

Đóng hộp thoại, có thể mở lại khi cần thiết.

8

Hãy nhớ nếu bạn đang sử dụng hộp thoại để nhập biểu mẫu, việc hủy nó sẽ KHÔNG xóa đầu vào của bạn, vì vậy nếu bạn đang xác thực với: bộ chọn giả đầu vào, các phần tử bạn đã hủy 'sẽ được xác thực. Đây là nơi .remove() có ích.

Bạn có thể thêm sự kiện đóng tùy chỉnh phá hủy hộp thoại của bạn và xóa bất kỳ biểu mẫu nào bên trong hộp thoại để ngăn xác thực hơn nữa.

$dialog = $("#your_dialog_id"); 
$dialog.dialog('option', { 
     title: "title", 
     close: function (event, ui) { 
      $dialog.find("form").remove(); 
      $dialog.dialog('destroy'); 
     } 
    }); 
Các vấn đề liên quan