我正在尝试通过单击父DIV内的按钮或在输入表单中输入文本,将类添加到屏幕顶部的元素。
它有效,但不适用于附加元素。当它对附加元素起作用时,就像每次附加元素时这些元素的偏移量都会消失,然后它会将类应用到每个附加元素之后。这很烦人,我已经坚持了至少一个星期了。
当元素点击屏幕顶部时,我用来添加类的代码是:
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 ,但它仍然给了我相同的结果。
当用户点击父母中的按钮时,每次偏移都会变得更糟,并且在他们甚至到达屏幕顶部之前将该类应用于所有元素。
答案 0 :(得分:1)
$(".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')
});
});
答案 1 :(得分:0)
似乎您正在尝试将函数附加到每个.chat-log
div,因此它会在滚动时执行。问题是当它执行时,只有一个这样的div,所以只有它在传递顶部时才会改变它的类。
您必须更改函数,以便for each
位于每个滚动执行的函数内。例如,您可以将其附加到窗口,然后在其中搜索应该应用样式的div。