Tôi đang cố gắng tự động đóng hộp thoại sau ba giây sau khi mở. Tôi đã thử các phương pháp sau:Hộp thoại giao diện người dùng jQuery Tự động đóng bằng cách sử dụng setTimeout
setTimeout($("#mydialog").dialog('close'), 3000);
Dưới đây là trong bối cảnh:
$("#acknowledged-dialog").dialog({
height: 140,
modal: true
});
setTimeout($("#acknowledged-dialog").dialog('close'), 3000);
Nhưng với phương pháp này, nó thậm chí không hiển thị! Tôi đoán phương pháp đóng được gọi ngay sau khi nó được hiển thị trên trang. Nhật ký không hiển thị lỗi.
Tôi cũng đã cố gắng liên kết với các sự kiện dialogopen:
$("#acknowledged-dialog").bind('dialogopen', function(event, ui) {
setTimeout($(this).dialog('close'), 3000);
});
$("#acknowledged-dialog").dialog({
height: 140,
modal: true
});
Các chương trình hội thoại, nhưng không thực hiện tự động đóng. Không có lỗi trong nhật ký ở đây.
Tôi không thể sử dụng 'this' trong đối số cho $ trong setTimeout?
và không, trừ khi bạn theo dõi @toby và bọc hàm, tôi đã tìm thấy tôi không thể sử dụng 'this' trong đoạn mã trên cho setTimeout. – DefyGravity
Chỉ muốn lưu ý, trong trường hợp chuỗi eval đó không hoạt động (như khi tôi đang tạo tiện ích mở rộng của Chrome), bạn chỉ có thể biến chuỗi thành một hàm ẩn danh. –
Lưu ý rằng nếu người dùng đóng hộp thoại theo cách thủ công trước khi hết giờ, bộ hẹn giờ trong mã trên sẽ tiếp tục chạy và cố gắng đóng hộp thoại lần thứ hai - điều này là ok trừ khi hộp thoại bị hủy. Nhưng nếu hộp thoại được hiển thị lần thứ hai trước thời gian chờ đầu tiên, bộ hẹn giờ đầu tiên sẽ đóng hộp thoại sớm. –