我这里有一段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>
答案 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。