不在屏幕上时丢失元素
问题描述:
我试图在屏幕上消失元素,然后出现新元素。 问题是,即使它不是在屏幕外,但在每个卷轴上,元素都会消失。不在屏幕上时丢失元素
这里是我的代码:
$(window).scroll(function() {
scrollHide('#zabiegi');
});
function scrollHide(sectionId) {
if ($(window).width() < 968) {
$(sectionId).each(function() {
if (($(sectionId).find('.two').offset().top - $(window).scrollTop()) < 20) {
$(sectionId).find('.two').stop().fadeOut("slow", function() {
$(sectionId).find('.one').fadeIn();
updateMargin(sectionId,'.one');
});
}
});
}
}
我也已经tryied不同的方法,这一次 - 什么也没有发生,如果语句总是提供虚假。
$(window).scroll(function() {
scrollHide('#zabiegi');
});
function scrollHide(sectionId) {
if ($(window).width() < 968) {
$(sectionId).each(function() {
var off = $(sectionId).find('.two').offset();
var t = off.top;
var h = $(sectionId).find('.two').height();
var docH = $(window).height();
console.log(t > 0 && t + h < docH);
if (t > 0 && t + h < docH) {
$(sectionId).find('.two').stop().fadeOut("slow", function() {
$(sectionId).find('.one').fadeIn();
updateMargin(sectionId,'.one');
});
}
});
}
}
答
好的,我找到了一个解决方案。问题在于if条件语句中。 下面是代码:
function scrollHide(sectionId) {
if ($(window).width() < 968) {
$(sectionId).each(function() {
if (($(sectionId).find('.two').offset().top + $(sectionId).find('.two').outerHeight() - $(window).scrollTop()) < 0 ) {
$(sectionId).find('.two').stop().fadeOut("slow", function() {
$(sectionId).find('.one').fadeIn();
updateMargin(sectionId,'.one');
});
}
});
}
});
但仍然有问题...上面的脚本作品只有当我向下滚动不起来 ......所以我加入条件语句:
if (($(sectionId).find('.two').offset().top + $(sectionId).find('.two').outerHeight() - $(window).scrollTop()) < 0 || ($(sectionId).find('.two').offset().top - $(sectionId).find('.two').outerHeight() + $(window).scrollTop()) < 0) {
并在console.log输出是好的 - 它显示0当我上面的元素,但仍然不工作...