Sự kiện có thể đẹp, nhưng vì không có sự kiện tự nhiên với sự xuất hiện, sự kiện đòi hỏi phải biết khi nào một mục được thêm vào để sự kiện có thể được kích hoạt theo cách thủ công. Bạn có thể sử dụng bỏ phiếu để kiểm tra sự xuất hiện của một cái gì đó và thực hiện một hành động khi nó xuất hiện. Điều này phù hợp với nội dung được thêm ngoài tầm kiểm soát của bạn, chẳng hạn như từ đầu vào của người dùng, ajax hoặc các chương trình khác.
setInterval(function() {
$('.my-element-class:not(.appeared)')
.addClass('appeared')
.each(function() {
console.log("here I am!")
});
}, 250);
Điều này sẽ kiểm tra sự xuất hiện của một phần tử theo tên lớp (hoặc bất kỳ tiêu chí chọn khác nào bạn cung cấp) 4 lần mỗi giây và chạy mã khi mục mới xuất hiện. Một khi một mục được nhìn thấy lớp .appeared được thêm vào để ngăn chặn trường hợp đó được phát hiện một lần nữa. Nếu bạn chỉ muốn thử nghiệm một lần, bạn có thể đơn giản hóa và đóng cửa bỏ phiếu sau khi phát hiện.
var testAppearTmr = setInterval(function() {
if ($('.my-element-class').length) {
clearInterval(testAppearTmr);
console.log("here I am!")
}
}, 250);
Các jQuery appear plugin được xây dựng xung quanh những kỹ thuật này và có rất nhiều lựa chọn, như các bài kiểm tra vì nếu mục nằm trong khu vực xem, nhưng nếu tất cả các bạn muốn làm là thử nghiệm cho một vài mặt hàng được bổ sung cho dom mã trên là nhiều tiết kiệm hơn một plugin.
Nguồn
2015-07-14 17:05:05
Làm thế nào để bạn xác định 'khi nào nó xuất hiện'? tức là khi nó được tải vào DOM, hoặc khi nó đã được hiển thị bởi một số mã jQuery khác? – BenM
Hoặc khi phần tử hiển thị chính nó, nhưng không phải trong chế độ xem và người dùng đã cuộn đến phần tử đó? – Tommi
xin lỗi, ý tôi là khi nó đã được thêm hoàn toàn vào DOM –