Javascript 仅在值上滚动添加类一次
我无意中发现了一个菜单问题,当滚动到某个值以上时,我想通过添加一个“open”类来打开该菜单。问题是,我希望它在该值之后只打开一次,以便它显示给用户,然后由用户通过切换来打开和关闭它 我用了这个方法:Javascript 仅在值上滚动添加类一次,javascript,jquery,Javascript,Jquery,我无意中发现了一个菜单问题,当滚动到某个值以上时,我想通过添加一个“open”类来打开该菜单。问题是,我希望它在该值之后只打开一次,以便它显示给用户,然后由用户通过切换来打开和关闭它 我用了这个方法: <script type="text/javascript"> jQuery(function() { //caches a jQuery object containing the header element jQuery(window).scroll(functi
<script type="text/javascript">
jQuery(function() {
//caches a jQuery object containing the header element
jQuery(window).scroll(function() {
var scroll = jQuery(window).scrollTop();
if (scroll >= 1150) {
jQuery(".menubar").addClass("open");
}
});
});
</script>
jQuery(函数(){
//缓存包含header元素的jQuery对象
jQuery(窗口).滚动(函数(){
var scroll=jQuery(window.scrollTop();
如果(滚动>=1150){
jQuery(“.menubar”).addClass(“打开”);
}
});
});
问题是,在1150值之后,在该值内的每次滚动后,它都会不断弹出。
我如何让它停止,让这个事件只发生一次
提前谢谢你 检查该类是否已存在。或者,如果类太容易更改,则使用变量:
var isOpened = false;
jQuery(function() {
//caches a jQuery object containing the header element
jQuery(window).scroll(function() {
var scroll = jQuery(window).scrollTop();
// The original if statement, testing for `.hasClass()`
// if (scroll >= 1150 && !$(".menubar").hasClass()) {
if (scroll >= 1150 && !isOpened) {
isOpened = true;
jQuery(".menubar").addClass("open");
}
});
});
检查该类是否已存在。或者,如果类太容易更改,则使用变量:
var isOpened = false;
jQuery(function() {
//caches a jQuery object containing the header element
jQuery(window).scroll(function() {
var scroll = jQuery(window).scrollTop();
// The original if statement, testing for `.hasClass()`
// if (scroll >= 1150 && !$(".menubar").hasClass()) {
if (scroll >= 1150 && !isOpened) {
isOpened = true;
jQuery(".menubar").addClass("open");
}
});
});
您可以设置一个标志,然后对照该标志进行检查
jQuery(function() {
var menuBarOpenedOnce = 0;
//caches a jQuery object containing the header element
jQuery(window).scroll(function() {
var scroll = jQuery(window).scrollTop();
if (scroll >= 1150 && menuBarOpenedOnce === 0) {
jQuery(".menubar").addClass("open");
menuBarOpenedOnce = 1;
}
});
});
您可以设置一个标志,然后对照该标志进行检查
jQuery(function() {
var menuBarOpenedOnce = 0;
//caches a jQuery object containing the header element
jQuery(window).scroll(function() {
var scroll = jQuery(window).scrollTop();
if (scroll >= 1150 && menuBarOpenedOnce === 0) {
jQuery(".menubar").addClass("open");
menuBarOpenedOnce = 1;
}
});
});
我不能这样做,因为用户可以通过手动关闭来切换“打开”类。在这种情况下,类将不存在,它将再次弹出一个滚动条。然后创建另一个变量,如
userClosed
,并检查此项@LeonVFX@NickBull只是想了解一下这个概念,因为默认情况下,isOpened
是false
,所以如果(滚动>=1150&&isOpened){…}?@Mr.Developer极好的地点,这个语句将如何为true呢!忘记了
@NickBull现在理解了逻辑+10I不能这样做,因为用户可以通过手动关闭来切换“open”类。在这种情况下,类将不存在,它将再次弹出一个滚动条。然后创建另一个变量,如userClosed
,并检查此项@LeonVFX@NickBull只是想了解一下这个概念,因为默认情况下,isOpened
是false
,所以如果(滚动>=1150&&isOpened){…}?@Mr.Developer极好的地点,这个语句将如何为true呢!忘记了代码>@NickBull现在理解了逻辑+10