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

时间:2014-08-20 01:12:47

标签: javascript

我这里有一段javascript代码。单击超链接时,将调用load_button()函数,该函数仅将变量load_switch设置为true。我在$(window).scroll(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>

2 个答案:

答案 0 :(得分:1)

命名您的功能

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();
});

答案 1 :(得分:0)

您可以使用triggerHandler

$(window).triggerHandler('scroll');

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

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。