如何使用 jQuery 显示隐藏在滚动条下方的消息数?

How to show count for messages which are hidden below the scroll using jQuery?

我需要显示已加载但在对话屏幕中向下滚动消息的计数器。假设总共有 15 条消息,但目前在浏览器上只显示 6 条。这意味着下面隐藏了 9 条消息,因此计数器应该显示 9。但是当我向上或向下滚动时,计数器应该相应地更改可见和隐藏消息的值。

        function isScrolledIntoView(elem) {
         var $elem = $(elem);
        var $window = $(window);

        var docViewTop = $window.scrollTop();
            var docViewBottom = docViewTop + $window.height();

            var elemTop = $elem.offset().top;
            var elemBottom = elemTop + $elem.height();

        return ((elemBottom <= docViewBottom) && (elemTop >=        docViewTop));
        }
            var message = $('#messages');
            $(window).scroll(function() {
        if (isScrolledIntoView('#hiddenElem')) {
      message.text("Visible");
        } else {
      message.text("Invisible");
    }
  });

检查 this JS Fiddle 中的代码。还有 JavaScript 为显示隐藏或可见元素编写的代码。

您必须将每条消息的位置与滚动值进行比较。
所以你需要遍历它们。

这是有效的:

var messages=$(".msg");

$(window).scroll(function(){
  var counter=0;
  for(i=0;i<messages.length;i++){
    if( messages.eq(i).offset().top < $(window).scrollTop() ){
      counter++;
    }
  }
  // Display result.
  $("#messages").html(counter);
});

Updated Fiddle