Không có câu trả lời tôi tìm thấy trên internet hài lòng tôi trong khi tôi đang tìm kiếm tại giải pháp. Ngay cả cái này cũng không. Sau khi đọc nhiều hơn về tài liệu API của JQuery, I found something really interesting. Khi trang web này mô tả, bạn có thể ràng buộc một sự kiện mà nó sẽ được thực hiện sau khi yêu cầu ajax đã thực hiện công việc của mình. Thing là, nó không đơn giản như thế này; Khi tôi đang thực hiện các thử nghiệm của riêng mình, sử dụng ví dụ được cung cấp trong tài liệu API, tôi không thể làm cho nó hoạt động. Dường như hộp thoại JQuery của tôi không tồn tại theo ngữ cảnh "tương lai".
Điều này dẫn tôi đến this page mô tả đó là: Đính kèm trình xử lý sự kiện cho tất cả các yếu tố phù hợp với bộ chọn hiện tại, hiện tại và trong tương lai. Tìm điều này dẫn tôi tạo một chức năng như thế này:
$(document).live("ajaxStop", function (e) {
$(".myDiagDiv").dialog("option", "position", "center");
});
Và thì đấy! Nó hoạt động như một say mê! Sau khi yêu cầu ajax được thực hiện, thuộc tính vị trí được thay đổi và thích nghi với nội dung của div và kích thước của nó!
Hy vọng nó sẽ giúp mọi người trong tương lai!
EDIT: Bạn có thể muốn sử dụng hàm ".on()" thay vì ".live()". Kể từ khi tôi viết câu trả lời của tôi, nó có vẻ như chức năng ".live()" như đã bị xóa trong phiên bản 1.9 của jQuery và thay thế bằng cái mới. Một giải pháp thích hợp hơn cho người sử dụng jQuery> = 1,9 sẽ là một cái gì đó như thế này:
$(document).on("ajaxStop", function (e) {
$(".myDiagDiv").dialog("option", "position", "center");
});
Thử gọi "$ ("#dialog") .dialog ({}); " một lần nữa sau mỗi lần cập nhật ajax? –
@madhairsilence: Nếu bạn tìm thấy câu trả lời của tôi tốt, hãy xem xét làm cho nó là "chấp nhận". Điều đó sẽ làm cho nó hiển thị rõ hơn cho khách truy cập trong tương lai. Cảm ơn! – DaveWut
Câu hỏi đã có câu trả lời được đánh dấu – madhairsilence