如何立即调用javascript函数而不是滚动调用

如何立即调用javascript函数而不是滚动调用,javascript,Javascript,我这里有一段javascript代码。单击超链接时,将调用load_button()函数,该函数仅将变量load_开关设置为true。我在$(窗口)中有一段代码。滚动(function(){,它会在用户滚动时触发代码。因此,此时,用户单击超链接将变量设置为true,然后在用户滚动时触发我的load_posts函数(我在包含的代码中省略了该函数,以便于阅读,请参见下文)。 我想知道如何在用户不必先滚动激活的情况下启动函数。我正在编辑一个以前编程的函数,该函数过去是无限滚动的(因此当用户滚动时会调用

我这里有一段javascript代码。单击超链接时,将调用load_button()函数,该函数仅将变量load_开关设置为true。我在
$(窗口)中有一段代码。滚动(function(){
,它会在用户滚动时触发代码。因此,此时,用户单击超链接将变量设置为true,然后在用户滚动时触发我的load_posts函数(我在包含的代码中省略了该函数,以便于阅读,请参见下文)。 我想知道如何在用户不必先滚动激活的情况下启动函数。我正在编辑一个以前编程的函数,该函数过去是无限滚动的(因此当用户滚动时会调用该函数)。以下是我的javascript:

<script language="javascript">
            var load_switch = false;

            function load_button(){
                load_switch = true;
            }

            $(document).ready(function() {
                $('.loader').hide();
                var load = 0;

                $(window).scroll(function() {
                    if(load_switch) {
                        //load_posts function goes here
                    }

                });
            });
</script>

无功负载开关=假;
功能加载按钮(){
load_开关=真;
}
$(文档).ready(函数(){
$('.loader').hide();
无功负荷=0;
$(窗口)。滚动(函数(){
if(负载开关){
//加载功能在这里
}
});
});
命名您的函数

var load_switch = false;
function load_button(){
    load_switch = true;
}
// Name your function instead of defining it inline
function onScroll() {
    if(load_switch) {
        //load_posts function goes here
    }
}
$(document).ready(function() {
    $('.loader').hide();
    var load = 0;
    $(window).scroll(onScroll);
    // Call it whenever you'd like
    onScroll();
});
您可以使用:

注意:这将运行所有事件处理程序。如果不希望这样,则需要将所需的事件处理程序存储在变量中:

function handleScroll() {
    //load_posts function goes here
}
function load_button(){
    $(window).on('scroll', handleScroll);
}
$(document).ready(function() {
    $('.loader').hide();
    handleScroll(); // Call it manually
});

另请注意,您的方法不正确。与其总是运行事件处理程序,并在布尔标志为false时退出,不如去掉该标志,添加或删除事件处理程序,而不是将标志设置为true或false。

这样做的缺点是,如果有其他滚动处理程序,它们也将被调用。注意,这是一种错误的方法。Inste总是运行事件处理程序并在bool为false时退出的ad,去掉该标志并添加或删除事件处理程序,而不是将标志设置为true或false。@Oriol请解释为什么添加/删除处理程序更好。我认为这是您的观点,而不是一个硬事实。@JuanMendes因为调用函数很昂贵,而且
scroll
事件处理程序将被调用很多次。而且因为变量少,所以更干净。@Oriol调用函数没有那么昂贵,不太可能引起问题。当您不必安装和卸载处理程序时,代码通常更易于维护。我只是说这是一个设计决策。
function handleScroll() {
    //load_posts function goes here
}
function load_button(){
    $(window).on('scroll', handleScroll);
}
$(document).ready(function() {
    $('.loader').hide();
    handleScroll(); // Call it manually
});