如何使用jquery获取元素位置

如何使用jquery获取元素位置,jquery,css,scroll,Jquery,Css,Scroll,我正在尝试将侧边栏的绝对位置更改为固定位置。这个想法是,边栏将是绝对的,直到它接触到页脚,然后它将是固定的。因此,下面的代码在我的大显示器上运行良好,但在我的小显示器上,边栏在碰到页脚之前就被修复了,我假设在更大的显示器上,边栏会碰到页脚,而下面的代码不会触发 $(document).scroll(function() { if ($(this).scrollTop() < 5953) { $('.hanger').addClass(' hanger sidebar

我正在尝试将侧边栏的绝对位置更改为固定位置。这个想法是,边栏将是绝对的,直到它接触到页脚,然后它将是固定的。因此,下面的代码在我的大显示器上运行良好,但在我的小显示器上,边栏在碰到页脚之前就被修复了,我假设在更大的显示器上,边栏会碰到页脚,而下面的代码不会触发

$(document).scroll(function() {
    if ($(this).scrollTop() < 5953) {
        $('.hanger').addClass(' hanger sidebar');
        $('.xoxo').removeClass('xoxo2 ')
        $('.xoxo').css("position", "fixed");
    }
})
$(文档)。滚动(函数(){
if($(this.scrollTop()<5953){
$('.hanger').addClass('hanger边栏');
$('.xoxo').removeClass('xoxo2'))
$('.xoxo').css(“位置”,“固定”);
}
})
那么,有没有一种方法可以动态获取数字
5953
?我试过:
var value=$('#footer').scrollTop()
和var value=
$('#footer').offset().top
然后传递
值而不是固定数字

这里是演示-如果你的显示器比我的大或小,你会看到边栏不能正常工作


谢谢这是你要找的吗

var value           = $(window).height() + $(window).scrollTop(); 
var elementTop      = $('#pagefooter').offset().top;

if( value >= elementTop ) {
    $('.hanger').removeClass('sidebar');
    $('.xoxo').addClass('xoxo xoxo2')
    $('.xoxo').css("position","absolute");  
}
else if( value < elementTop ) {
    $('.hanger').addClass(' hanger sidebar');
    $('.xoxo').removeClass('xoxo2 ')
    $('.xoxo').css("position","fixed");  
}
var value=$(窗口).height()+$(窗口).scrollTop();
var elementTop=$('#pagefooter').offset().top;
如果(值>=elementTop){
$('.hanger').removeClass('sidebar');
$('.xoxo').addClass('xoxo xoxo2'))
$('.xoxo').css(“位置”、“绝对”);
}
else if(值
我在本地测试了它,不管你的窗口有多大,它似乎都能工作。它基本上是将窗口大小添加到滚动顶部,以查看页脚是否已移动到视口中

2注 当在移动设备(如iOS)上滚动时,滚动事件在所有动力结束时触发。因此,您将无法看到桌面上的平滑移动


并且页脚的id不是
footer
,而是
pagefooter
:)

要访问页脚元素,可以使用元素id或元素

例子:
  • 要访问页脚元素:
    $('footer')
  • 要访问页脚id:
    $(“#pagefooter”)
只要这样做,就可以找到当前的页脚位置

var currentPosition = $('footer').position().top - $(window).height();

我准备了一个粗略的来解释你。

上面的
$(“#footer').offset()。top
路线应该很好,并且是合乎逻辑的。这就是您当前的代码所使用的吗?在我的显示器上,您链接到的示例工作正常。@Utkanos否我正在使用5953的值,这就是为什么它适用于您。其中,作为offset().top将返回7072,这不会在all@Aurel你能告诉我当你期望7072是5953时,你收到的是多大的视窗吗?我只能得到7072@1024/768,而5953肯定还不接近#在这个大小上应该是什么。@Ohgod为什么我得到的是视口大小:1267 x 985和窗口大小:1267 x1080@aurel当前位置我添加了我的。非常感谢。它似乎在所有以前不起作用的情况下都起作用。