自动触发“加载更多”在用户到达底部之前使用 jquery 链接。如何?

发布于 2024-11-27 03:34:59 字数 618 浏览 1 评论 0原文

好的,伙计们。我有一个类名为“more_updates”的链接。我希望每次用户到达页面 80% 时自动触发加载更多链接。

我列出了 50 种产品。每行包含 5 个带有图像的产品。在底部我有加载更多链接。如果用户到达第 7 行或第 8 行,则应自动触发加载更多链接。这是我正在使用的代码。但它加载更多产品。 请告诉我这段代码有什么问题。谢谢

<!-- language: lang-js -->
    $(window).scroll(function(){
            if  ($(window).scrollTop() >= ($(document).height() / 2) - $(window).height()){
                if (!flag) {           
                      // if is not loading data, start the call
                      $('.more_updates').click();      // to invoke the click event of loading updates
                }
            }
    });

Ok guys. I have a link with class name "more_updates". I want the load more link to be triggered automatically everytime the user reach 80% of the page.

I'm listing 50 products. Each row contains 5 products with images. At the bottom i have load more link. If the user reach 7th or 8th row then the load more link should be triggered automatically. This is the code i'm using. But it loading more products.
Please tell me whats wrong in this code. Thanks

<!-- language: lang-js -->
    $(window).scroll(function(){
            if  ($(window).scrollTop() >= ($(document).height() / 2) - $(window).height()){
                if (!flag) {           
                      // if is not loading data, start the call
                      $('.more_updates').click();      // to invoke the click event of loading updates
                }
            }
    });

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

命比纸薄 2024-12-04 03:34:59

我认为您以错误的方式触发了点击事件(因为在您的情况下它不是由用户触发而是由滚动方法触发)。将 $('.more_updates').click(); 更改为 $('.more_updates').trigger("click");

调用 .trigger() 会按照处理程序的顺序执行处理程序
如果事件是由用户自然触发的

在此处阅读更多信息

编辑/更新

停止点击事件上的事件冒泡:

...
$('.more_updates').live("click", function (e) {
e.stopImmediatePropagation()
...

在此处了解更多信息

同时取消绑定/die 点击事件.show_more 当没有满足结果条件时:

else { 
  $(".morebox").html('No More Results.'); // no results
  $('.more_updates').die("click");
}

在此处了解更多

I think you are triggering the click event in wrong way (because in your case it isn't triggered by user but by scroll method). Change $('.more_updates').click(); to $('.more_updates').trigger("click");

A call to .trigger() executes the handlers in the same order they
would be if the event were triggered naturally by the user

read more here

EDIT/UPDATE:

Stop event bubbling on your click event:

...
$('.more_updates').live("click", function (e) {
e.stopImmediatePropagation()
...

read more here

Also unbind/die click event of .show_more when there no results condition is met:

else { 
  $(".morebox").html('No More Results.'); // no results
  $('.more_updates').die("click");
}

read more here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文