创建自定义jquery不定式婴儿车,发送请求后如何打开和关闭滚动?

Posted

技术标签:

【中文标题】创建自定义jquery不定式婴儿车,发送请求后如何打开和关闭滚动?【英文标题】:Creating custom jquery infinitive stroller, how to turn scroll on and off after sending request? 【发布时间】:2019-11-02 08:07:00 【问题描述】:

当我使用$(document).off('scroll'); 关闭它时,我希望能够打开$(document).on('scroll', function() ...);

到目前为止,我的代码尝试使用 debounce 功能,但我得到了

非法调用

function scroller(lang, type, genre, sort, page) 
    console.log($(this).scrollTop() * 2, $('#pages').position().top);
    if ($(this).scrollTop() * 2 >= $('#pages').position().top) 
        $.post('<?= (new UrlLibry)->SetUrl('bookshop', 'jajax', 'page'); ?>', lang: lang, type: type, genre: genre, sort: sort, pages: page, function(data) 
            $('#loadmore').append(data);
            page++;
            $('#pageNumber').data('page', page);
        );
    


var debouncedMouseMove = debounce(scroller, 50);
$(document).on('scroll', debouncedMouseMove);

【问题讨论】:

【参考方案1】:

您可以将处理函数与.on() 调用分离。

此外,如果您用去抖动函数替换所有内容,则需要继续考虑该函数必须只有一个参数:事件。

我使用了下划线js库中包含的debounce函数。

function scroller(event) 
  console.log('called...');
  return;

    var lang, type, genre, sort, page; // cannot pass as argument
    console.log($(this).scrollTop() * 2, $('#pages').position().top);
    if ($(this).scrollTop() * 2 >= $('#pages').position().top) 
        $.post("<?= (new UrlLibry)->SetUrl('bookshop', 'jajax', 'page'); ?>",
                lang: lang, type: type, genre: genre, sort: sort, pages: page, function(data) 
            $('#loadmore').append(data);
            page++;
            $('#pageNumber').data('page', page);
        );
    


var debouncedMouseMove = _.debounce(scroller, 50);
$(document).on('scroll', debouncedMouseMove);
body 
    height: 400vh;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>

【讨论】:

我认为它正在使用 debounce 功能,但现在我收到 Illegal invocation 非常感谢,我设法在没有下划线库的情况下做到了,我需要吗?我的意思是,如果可以的话,我宁愿不使用外部库,因为我倾向于希望我的网站加载时间的性能少于 2 秒。

以上是关于创建自定义jquery不定式婴儿车,发送请求后如何打开和关闭滚动?的主要内容,如果未能解决你的问题,请参考以下文章

Get 自定义 Jquery 数据表 GET 将发送到服务器的请求参数

在自定义适配器类中发送服务器请求后,如何更改 Listview 按钮名称?

如何使用js或jQuery向ajax请求添加自定义HTTP标头?

如何在 JQuery 数据表中显示自定义处理消息

如何阻止用户使用 JWT 创建自定义 POST 请求?

jQuery AJAX 方法