Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅在值上滚动添加类一次_Javascript_Jquery - Fatal编程技术网

Javascript 仅在值上滚动添加类一次

Javascript 仅在值上滚动添加类一次,javascript,jquery,Javascript,Jquery,我无意中发现了一个菜单问题,当滚动到某个值以上时,我想通过添加一个“open”类来打开该菜单。问题是,我希望它在该值之后只打开一次,以便它显示给用户,然后由用户通过切换来打开和关闭它 我用了这个方法: <script type="text/javascript"> jQuery(function() { //caches a jQuery object containing the header element jQuery(window).scroll(functi

我无意中发现了一个菜单问题,当滚动到某个值以上时,我想通过添加一个“open”类来打开该菜单。问题是,我希望它在该值之后只打开一次,以便它显示给用户,然后由用户通过切换来打开和关闭它

我用了这个方法:

<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