Tôi có một câu hỏi liên quan đến một chức năng sẽ được gọi nếu đối tượng nằm trong màn hình của tôi. Nhưng khi đối tượng nằm trong màn hình của tôi, hàm này được gọi và cảnh báo được kích hoạt. Nhưng nếu tôi đóng cảnh báo và di chuyển xuống dưới sự kiện được gọi lại. Tôi không muốn điều đó. Làm thế nào tôi có thể giải quyết điều đó?Chức năng gọi khi di chuyển chỉ một lần
Mã của tôi cho đến nay:
<div id="wrapper">
scroll down to see the div
</div>
<div id="tester"></div>
JS
$(window).on('scroll',function() {
if (checkVisible($('#tester'))) {
alert("Visible!!!")
} else {
// do nothing
}
});
function checkVisible(elm, eval) {
eval = eval || "object visible";
var viewportHeight = $(window).height(), // Viewport Height
scrolltop = $(window).scrollTop(), // Scroll Top
y = $(elm).offset().top,
elementHeight = $(elm).height();
if (eval == "object visible") return ((y < (viewportHeight + scrolltop)) && (y > (scrolltop - elementHeight)));
if (eval == "above") return ((y < (viewportHeight + scrolltop)));
}
Những gì tôi muốn là các chức năng Nếu chỉ sẽ được gọi 1 lần và không phải trên mỗi cuộn nếu đối tượng có thể nhìn thấy.
Yep. đoạn mã cuối cùng của bạn đã thực hiện thủ thuật! Cảm ơn bạn đã giúp đỡ! Tôi sẽ chấp nhận câu trả lời của bạn sau 11 phút – Rotan075