Jquery 在卷轴上仅显示一次div
当用户通过jQuery滚动时,我想显示这个DIV。我修改了一个“粘性导航”脚本。我希望它在4秒后从视图中消失,所以我在延迟后添加了removeClass。这一切都是可行的,但我想确保这只发生在用户可以左右滑动时 这是HTMLJquery 在卷轴上仅显示一次div,jquery,scroll,conditional,show,Jquery,Scroll,Conditional,Show,当用户通过jQuery滚动时,我想显示这个DIV。我修改了一个“粘性导航”脚本。我希望它在4秒后从视图中消失,所以我在延迟后添加了removeClass。这一切都是可行的,但我想确保这只发生在用户可以左右滑动时 这是HTML <div id="inhoudMobiel"> <div id="swipetip"></div> <div id="swipetipanker"></div>
<div id="inhoudMobiel">
<div id="swipetip"></div>
<div id="swipetipanker"></div>
</div>
将“on”和“off”文本替换为0和1更具逻辑性,并主要改进了比较器以进行实际比较,而不是重新设置变量。不过,我想显示的DIV在每次滚动时只显示一次。在控制台中,您将看到一个“1”,后跟一系列零。因此,重置变量是可行的,但比较器不可行。此外,滚动时零会不断出现,因此滚动检测基本上会继续工作,即使它不应该这样做。如果您按如下方式更改代码,它将防止它在If语句中多次运行,以检测stickyCount是否从其初始值更改,您使用的是=这是一个赋值运算符,它更改了stickyCount的值,而不是对其进行比较。将其更改为===可以确保您正在进行正确的比较,这正是您想要的 $document.readyfunction{ var stickyCount='aan', firstRun=true; console.logstickyCount; var stickyNavTop=$'swipetipanker'.offset.top; var stickyNav=函数{ var scrollTop=$window.scrollTop; 如果stickyCount=='aan'{ 如果scrollTop>stickyNavTop{ $'body'.addClass'sticky'; setTimeoutfunction{$'body'.removeClass'sticky'},4000; 粘性计数='uit'; console.logstickyCount; } } }; $window.scroll函数{ 粘滞导航; };
}; 我现在已经以一种不那么优雅的方式解决了这个问题,但它满足了我的需要:
$(document).ready(function() {
var stickyNavTop = $('#swipetipanker').offset().top;
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('body').addClass('sticky');
setTimeout(function(){$('body').removeClass('sticky')}, 4000);
setTimeout(function(){$('#swipetip').remove()}, 4000);
}
};
$(window).scroll(function() {
stickyNav();
});
});
我只是在显示一次swipetip DIV之后从DOM中删除它。不那么优雅,因为滚动侦听器保持完整,什么也不听,但它确实起到了作用。谢谢,我真傻,没有查比较运算符,你说的有道理。不过,我的行为还是一样的。我在“$window.scroll”函数周围放置了“if”语句,因为在您不再需要滚动检测后,无需继续滚动检测,但我的div仍然会在每次滚动运动中出现。在控制台中,您将得到一个初始计数器,后面是一系列“首次使用后”计数器,因此这在某种程度上是可行的,但div仍然会不断出现。
$(document).ready(function() {
var stickyNavTop = $('#swipetipanker').offset().top;
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('body').addClass('sticky');
setTimeout(function(){$('body').removeClass('sticky')}, 4000);
var stickyCount = 0;
console.log(stickyCount);
}
};
var stickyCount = 1;
console.log(stickyCount);
if (stickyCount === 1) {
$(window).scroll(function() {
stickyNav();
});
}
});
$(document).ready(function() {
var stickyNavTop = $('#swipetipanker').offset().top;
var stickyNav = function(){
var scrollTop = $(window).scrollTop();
if (scrollTop > stickyNavTop) {
$('body').addClass('sticky');
setTimeout(function(){$('body').removeClass('sticky')}, 4000);
setTimeout(function(){$('#swipetip').remove()}, 4000);
}
};
$(window).scroll(function() {
stickyNav();
});
});