javascript - 当元素位于屏幕顶部时向元素添加类

标签 javascript jquery append offset scrolltop

我正在尝试向屏幕顶部的元素添加类,这些元素是通过单击父 DIV 内的按钮或在输入表单中输入文本来 append 的。

它有效,但不适用于 append 元素。当它确实适用于 append 元素时,就像每次 append 这些元素时这些元素的偏移量一样,然后它将该类应用于之后的每个 append 元素。这很烦人,我已经被这个问题困扰了至少一周了。

当元素到达屏幕顶部时我用来添加类的代码是这样的:

window.poo = function poo() {
     $("#message").each(function() {


var win = $(".chat-log"),
  nav = $(this),

  pos = nav.offset().top,
  sticky = function() {

    win.scrollTop() > pos ?
       nav.addClass('inactive') :
      nav.removeClass('inactive')
  }

win.scroll(sticky);
});

}

poo();

元素的父元素是#message#message的父元素是.chat-log。我已将 #message 更改为 .message,但它仍然给了我相同的结果。

当用户单击父级中的按钮时,偏移量每次都会变得更糟,并且在所有元素到达屏幕顶部之前,该类就会应用于所有元素。

最佳答案

$(".chat-log").on("scroll", function() {  
    console.log("I'm scrolling!");

    var win = $(this);  // .chat-log
    win.find(".message").each(function(){

        var nav = $(this);  // each .message found

        //console.log("win: "+win.scrollTop());
        console.log("nav: "+nav.offset().top);

        nav.offset().top < 0 ? nav.addClass('inactive') : nav.removeClass('inactive')
    });
});

关于javascript - 当元素位于屏幕顶部时向元素添加类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38041309/

相关文章:

javascript - React 组件之间的通信

javascript - polymer JS : How to use paper-input instead of input

javascript - Scrollspy jquery 不适用于 Firefox、Opera

javascript - 如何在特定的 'div' 内而不是在页面顶部显示 Angular 加载栏?

javascript - 使用 javascript 或 JQuery 在 HTML 中删除当前分区的按钮

Python 用 if/else append 一个字符串?

python - 仅比较三重中三个项目中的两个的一部分

javascript - 是否可以使用 Vue.js 触发事件?

javascript - jquery if 空白追加 else 更新

javascript - 如何将多个 onError 函数分配给一个 Promise(由 Angular 的 $http.post 返回)