Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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 jquery滚动事件多次运行代码_Javascript_Jquery_Coding Style_Standards - Fatal编程技术网

Javascript jquery滚动事件多次运行代码

Javascript jquery滚动事件多次运行代码,javascript,jquery,coding-style,standards,Javascript,Jquery,Coding Style,Standards,因此,在下面的代码中,console.log输出在滚动页面时多次滚动到dev tools控制台 $(document).on("scroll", function() { if ($(this).scrollTop() > 25) { console.log("scrolled"); //do something } else { //do something } }); 因此,如果我有一堆javascrip

因此,在下面的代码中,console.log输出在滚动页面时多次滚动到dev tools控制台

$(document).on("scroll", function() {
    if ($(this).scrollTop() > 25) {
        console.log("scrolled");
        //do something
    }
    else {
        //do something
    }
});
因此,如果我有一堆javascript来控制将导航栏设置为sticky,那么它可以有效地运行很多次。这似乎是一个糟糕的方法

我尝试使用以下代码阻止滚动事件:

$(document).on("scroll", function(e) {
    if ($(this).scrollTop() > 25) {
        console.log("scrolled");
        //do something
        e.preventDefault();
    }
    else {
        //do something
    }
});
但它仍然会多次滚动到开发工具。 我还尝试使用@jswebb建议的break语句,但它给了我这个js错误uncaughtsyntaxerror:invalikebreak语句

下面是显示输出的屏幕截图

如果$this.scrollTop!>25,在else语句中也是如此

干杯

编辑 对不起,我是个傻瓜-我看到你的日志在重复,我立刻想,在我的脑海里,循环!除了这里没有一个循环;只是每次滚动超出参数时,控制台都会记录输出

我不认为这一定是件坏事;并不是每次滚动时都会触发代码,而是告诉控制台在滚动超过25次时立即登录

至于你真实世界的粘性标题,我想知道这是否是一个问题

$(window).on("scroll", function(e) {
    if ($(this).scrollTop() > 25) {
        $("header").addClass("fixed");
    }
    else {
        $("header").removeClass("fixed");
    }
});
您只需将其设置为添加一个类,使您的头固定在25以上-您将使用IRL的代码只在您设置的阈值处触发一次

您是否尝试过在达到限制后使用break语句退出条件

$(window).on("scroll", function(e) {
    if ($(this).scrollTop() > 25) {
        console.log("scrolled");
        //do something
        break;
    }
    else {
        //do something
    }
});

嗨,谢谢你的帮助。break给了我这个js错误Uncaught SyntaxError:非法break语句我明白你的意思了,我想是因为console.logscrolled;发射了很多次我的密码一定是。但我猜代码不会运行多次。必须是某种jquery类型的东西,其中不允许经常运行相同的代码。谢谢你的澄清:没问题!这不是jQuery的事情,只是这个特定的案例只有一次触发的方法。您当然可以编写多次触发的jQuery,但这里只添加了一个简单的类@25。这种行为不会发生多次,因为它怎么可能发生呢?干杯