Tôi đã cố gắng để làm một cái gì đó dọc theo những dòng:Cách để thực hiện các hàm thành viên jQuery bên trong setTimeout mà không đóng cửa?
setTimeout($('#element').hide,3000);
mà có vẻ đơn giản, nhưng nó là làm tê liệt bởi các "this" problem. Tôi muốn tìm cách chuyển hàm thực tế dưới dạng tham số, mà không cần gói nó trong một hàm khác, ví dụ: Tôi không muốn làm điều này:
setTimeout(function(){$('#element').hide();},3000);
Những gì tôi đã cố gắng:
setTimeout($('#element').hide,3000);
setTimeout($('#element').hide.apply(document),3000); /* jQuery docs say that document is the default context */
setTimeout($('#element',document).hide,3000);
setTimeout($(document).find('#element').hide,3000);
setTimeout($(window).find('#element').hide,3000);
setTimeout($.proxy($('#element').hide,document),3000); /* I know this returns a function, which I don't want, but I have tried it */
setTimeout(($('#element').hide()),3000); /* functional expression */
Tôi đang tìm cách để khắc phục vấn đề này, nhưng tôi không muốn quấn nó trong một chức năng khác. Ít dòng mã hơn thì càng tốt. Tôi biết TẠI SAO điều này không làm việc như mong đợi, nhưng LÀM THẾ NÀO tôi có thể sửa chữa nó mà không cần gói nó trong một đóng cửa?
setTimeout sẽ chỉ mất một tên hàm, hoặc chức năng ẩn danh như một tham số, vì vậy tôi không nghĩ rằng điều này có thể được thực hiện như bạn muốn. Lý do bạn không muốn sử dụng chức năng nặc danh là gì? –
Trong bài viết bạn đã cho chúng tôi, họ đưa ra một giải pháp khả thi. Tại sao bạn không thử nó? –
@epascarello Đó là những gì tôi đã thử. Bảy lần thử khác nhau tại một dòng mã. –